Rust的迭代器在幕后发生了什么?

时间:2019-12-11 19:54:45

标签: rust iterator

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的变量?

0 个答案:

没有答案