Expand description
使用 in
进行迭代,使用 impl
或 更高等级的 trait bounds (for<'a>
) 实现 trait。
for
关键字在许多语法位置中使用:
for
用于 for-in 循环 (见下文)。- 在
impl Trait for Type
中实现 traits 时使用for
(有关更多信息,请参见impl
)。 for
也与for<'a> &'a T: PartialEq<i32>
一样用于 高级 trait 限定。
for-in 循环,或更确切地说,是迭代器循环,是 Rust 中一种常见实践上的简单语法糖,它遍历所有实现 IntoIterator
的对象,直到 .into_iter()
返回的迭代器返回 None
(或循环体使用 break
)。
for i in 0..5 {
println!("{}", i * 2);
}
for i in std::iter::repeat(5) {
println!("turns out {i} never stops being 5");
break; // 否则将永远循环
}
'outer: for x in 5..50 {
for y in 0..10 {
if x == y {
break 'outer;
}
}
}
Run如上面的示例所示,可以使用与生命周期相似的语法 (仅在视觉上相似,实际上完全不同) 来标记 for
循环 (以及所有其他循环)。给 break
提供相同的标记会中断标记的循环,这对于内部循环很有用。
绝对不是 goto。
for
循环如下图所示展开:
for loop_variable in iterator {
code()
}
Run{
let result = match IntoIterator::into_iter(iterator) {
mut iter => loop {
match iter.next() {
None => break,
Some(loop_variable) => { code(); },
};
},
};
result
}
Run有关所显示功能的更多详细信息,请参见 IntoIterator
文档。