1
我试图了解迭代器和可变性。我有以下代码应该基本上将一个切片复制到另一个切片。为什么我不能通过迭代器可变参考
fn equate<T>(in_slice: &[T], out_slice: &mut [T]){
for (ref i, ref mut o) in in_slice.iter().zip(out_slice.iter()){
*o = *i;
}
}
代码编译,但是当我测试它时,out_slice参数是不变的。
let slice_test_in = [1i, 2i, 3i];
let mut slice_test_out = [0i, 0i, 0i];
equate(slice_test_in, slice_test_out);
slice_test_out在调用后仍然是[0,0,0]。为什么我不改变第二个参数?
您需要使用'mut_iter()'而不是'iter()'。 –