for循环

迭代一个数组

rust的for循环实际上是被编译器扩展成了对方法的调用。对于使用for循环来迭代一个数组,主要有3种方式。

简化形式等价于访问级别
for item in xfor item in x.into_iter()拥有所有权
for item in &xfor item in x.iter()只读
for item in &mut xfor item in x.iter_mut()读写

这里需要注意的是,第一种for循环将会把x的所有权转移给for循环,因此,在for循环后,将不能再次访问数组x. 如果for循环后仍需访问,则需要使用第二/第三种for的方式。

在上述代码中,我们使用的是第一种迭代方式,因此,第26行无法获取names数组的所有权,编译出错。

指定循环的范围

我们可以通过以下方法来指定循环的范围,这是一个左闭右开区间。

for x in 0..10{
   println!("{}", x);
}

重要!尽量避免手动管理索引变量!

在C/C++这些编程语言中,我们会使用一个计数变量来作为索引下标来访问数组。Rust不推荐这种方式,原因是:

  • 性能问题:我们将要维护一个计数变量,这将会增加计算量。
  • 安全问题:使用手动管理索引的时候,数组可能会在迭代过程中被更改。如果自动管理迭代器的话,rust编译器将会保证迭代过程中数组不会被其他的地方更改。

转载请注明来源:https://longjin666.cn/?p=1577

欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~

你也可能喜欢

发表评论