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数组的所有权,编译出错。
我们可以通过以下方法来指定循环的范围,这是一个左闭右开区间。
for x in 0..10{
println!("{}", x);
}
在C/C++这些编程语言中,我们会使用一个计数变量来作为索引下标来访问数组。Rust不推荐这种方式,原因是:
转载请注明来源:https://longjin666.cn/?p=1577