如何交换向量中不可复制的元素?
How to swap non-copyable elements in a vector?
我想交换向量的 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
s。我还尝试创建第二个向量 temp_b
(与 temp_a
相同类型)并填充它而不是交换,但我总是得到相同的错误:the type of this value must be known in this context
.
我该如何解决?
您可以使用 swap()
method of Vec
直接交换两个元素:
v_sa_ib(j, j+1);
还有一个通用的交换函数,叫做std::mem::swap
,但是在这里很难使用,因为获取相同Vec
的两个不同元素的两个可变引用非常复杂。
它与整数一起工作的原因是整数实现了 Copy
特性,因此 Rust 可以自动创建新副本。
我想交换向量的 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
s。我还尝试创建第二个向量 temp_b
(与 temp_a
相同类型)并填充它而不是交换,但我总是得到相同的错误:the type of this value must be known in this context
.
我该如何解决?
您可以使用 swap()
method of Vec
直接交换两个元素:
v_sa_ib(j, j+1);
还有一个通用的交换函数,叫做std::mem::swap
,但是在这里很难使用,因为获取相同Vec
的两个不同元素的两个可变引用非常复杂。
它与整数一起工作的原因是整数实现了 Copy
特性,因此 Rust 可以自动创建新副本。