如何在向量中交换不可复制的元素?

时间:2017-07-25 08:01:41

标签: string vector rust swap

我想交换向量的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;

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

我该如何解决?

1 个答案:

答案 0 :(得分:-1)

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

v_sa_ib(j, j+1);

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

它使用整数的原因是整数实现Copy特征,因此Rust可以自动创建新副本。