文档没有说明如何使用,而且教程完全忽略了 for 循环。
最佳答案
从 1.0 开始,for 循环使用 Iterator
trait 类型的值。 .
这本书在 chapter 3.5 中描述了这种技术。和 chapter 13.2 .
如果您对for 循环的运作方式感兴趣,请参阅 Module std::iter 中描述的语法糖。 .
例子:
fn main() {
let strs = ["red", "green", "blue"];
for sptr in strs.iter() {
println!("{}", sptr);
}
}
( Playground )
如果您只想遍历一个数字范围,就像在 C 的 for 循环中一样,您可以使用 a..b
语法创建一个数字范围:
for i in 0..3 {
println!("{}", i);
}
如果您同时需要数组中的索引和元素,惯用的方法是使用 Iterator::enumerate
方法:
fn main() {
let strs = ["red", "green", "blue"];
for (i, s) in strs.iter().enumerate() {
println!("String #{} is {}", i, s);
}
}
注意事项:
循环项是对被迭代元素的借用引用。在这种情况下,
strs
的元素具有类型&'static str
- 它们是借用的指向静态字符串的指针。这意味着sptr
的类型为&&'static str
,因此我们将其取消引用为*sptr
。我更喜欢的另一种形式是:for &s in strs.iter() { println!("{}", s); }
关于loops - 你如何在 Rust 中创建一个范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271970/