在chapter 8 of The Rust Programming Language中,我遇到了一个关于迭代向量的章节,该向量令我感到困惑。
我有以下代码:
let v = vec![0, 1, 2];
for i in v {
println!("{}", i);
}
我将其修改如下:
let v = vec![0, 1, 2];
for i in &v {
println!("{}", i);
}
在每种情况下,幕后实际上发生了什么? Rust是在循环范围内创建名为i
的变量,然后将值复制到向量中(第一种情况)还是借用它(第二种情况)?
我可以告诉Rust正在将v
移入循环范围,因为如果我不使用对它的引用,则会在循环后尝试使用v
时出现编译错误实际创建了一个名为i
的变量?