前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >rust学习笔记:for循环的一些问题

rust学习笔记:for循环的一些问题

作者头像
灯珑LoGin
发布2022-11-14 19:48:39
5080
发布2022-11-14 19:48:39
举报
文章被收录于专栏:龙进的专栏龙进的专栏

for循环

迭代一个数组

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

简化形式

等价于

访问级别

for item in x

for item in x.into_iter()

拥有所有权

for item in &x

for item in x.iter()

只读

for item in &mut x

for item in x.iter_mut()

读写

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

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

指定循环的范围

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

代码语言:javascript
复制
for x in 0..10{
   println!("{}", x);
}

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月31日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • for循环
    • 迭代一个数组
      • 指定循环的范围
        • 重要!尽量避免手动管理索引变量!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档