从1.0开始,for个循环使用Iterator
trait的类型值.
这本书在chapter 3.5和chapter 13.2中描述了这种技术.
如果您对for循环的操作方式感兴趣,请参阅100中描述的语法糖.
例子:
fn main() {
let strs = ["red", "green", "blue"];
for sptr in strs.iter() {
println!("{}", sptr);
}
}
如果您只想在一个数字范围内进行迭代,如在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);
}
}
笔记:
循环项是对iteratee元素的borrow 引用.在本例中,strs
的元素具有&'static str
类型——它们是指向静态字符串的borrow 指针.这意味着sptr
有&&'static str
类型,所以我们将其解引用为*sptr
.我更喜欢的另一种形式是:
for &s in strs.iter() {
println!("{}", s);
}