在阅读 Rust 文档时,我偶然发现了使用 while 循环(带有索引)迭代数组的代码a:
fn main() {
let a = [10, 20, 30, 40, 50];
let mut index = 0;
while index < 5 {
println!("the value is: {}", a[index]);
index += 1;
}
}
Run Code Online (Sandbox Code Playgroud)
文档说:
... 这种方法容易出错;如果索引长度不正确,我们可能会导致程序崩溃。它也很慢,因为编译器添加了运行时代码以在循环的每次迭代中对每个元素执行条件检查。
第一个原因不言自明。第二个原因是我感到困惑的地方。
此外,他们建议为此使用 for 循环。
fn main() {
let a = [10, 20, 30, 40, 50];
for element in a.iter() {
println!("the value is: {}", element);
}
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法理解这一点。Rust 编译器是否有某种行为?
rust ×1