我想交换向量的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
。
我该如何解决?
答案 0 :(得分:-1)
您可以使用swap()
method of Vec
直接交换两个元素:
v_sa_ib(j, j+1);
还有一个名为std::mem::swap
的通用交换函数,但在这里很难使用,因为获取两个可变引用相同的Vec
的两个不同元素非常复杂。
它使用整数的原因是整数实现Copy
特征,因此Rust可以自动创建新副本。