小编Chu*_*han的帖子

为什么 Rust 文档说数组上的 while 循环比 for 循环慢?

在阅读 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

2
推荐指数
1
解决办法
400
查看次数

标签 统计

rust ×1