繁体   English   中英

为什么在 for 循环中使用.iter() | Rust

[英]Why use .iter() in a for loop | Rust

在这两个示例中,在 for 循环中使用.iter() 有什么好处吗?

let chars = ['g', 'd', 'k', 'k', 'n'];

for i in chars {
    println!("{}", i);
}

let chars = ['g', 'd', 'k', 'k', 'n'];

for i in chars.iter() {
    println!("{}", i);
}

谢谢

在版本 <= 2018

这两个例子是等价的。

for i in array由编译器解释为for i in (&array).into_iter()

这意味着您正在迭代&char类型的元素。

for i in array.iter()也遍历&char类型的元素。

在 2021 版及更高版本中

2021 版为 arrays 引入了 IntoIterator

这意味着现在for i in array被编译器解释为for i in array.into_iter()

您正在迭代char类型的元素。

但是, for i in array.iter()仍然迭代&char类型的元素,这意味着两个示例现在的行为不同。

第一种形式获取数组的所有权,而第二种形式只引用它。

这样做的好处是,如果你明确地使用了iter() ,你只能在循环之后重用chars数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM