【问题标题】:How to swap non-copyable elements in a vector? [duplicate]如何交换向量中的不可复制元素? [复制]
【发布时间】:2017-12-31 00:38:50
【问题描述】:

我想交换向量的String 元素

let mut v_sa: Vec<String> = vec![];
...
let temp_a = v_sa_ib[j];
v_sa_ib[j] = v_sa_ib[j+1];
v_sa_ib[j+1] = temp_a;

它适用于整数,但不适用于Strings。我还尝试创建第二个向量temp_b(与temp_a 相同类型)并填充它而不是交换,但我总是遇到相同的错误:the type of this value must be known in this context

我该如何解决?

【问题讨论】:

  • 字符串引用向量如何,只需更改引用?
  • 试过但没有成功
  • 错误:无法移出索引内容

标签: string vector rust swap


【解决方案1】:

您可以使用swap() method of Vec 直接交换两个元素:

v_sa_ib(j, j+1);

还有一个名为std::mem::swap 的通用交换函数,但在这里很难使用,因为获得两个可变引用两个不同元素的相同Vec 相当复杂。

它与整数一起工作的原因是整数实现了Copy trait,因此 Rust 可以自动创建新副本。

【讨论】:

    猜你喜欢
    • 2015-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    相关资源
    最近更新 更多