Keyword for[][src]

Expand description

使用 in 进行迭代,使用 implhigher-ranked trait bounds (for<'a>) 实现 trait。

for 关键字在许多语法位置中使用:

  • for 用于循环中 (请参见下文)。
  • for 如在 impl Trait for Type 中实现 traits 时使用 (有关此信息,请参见 impl)。
  • forfor<'a> &'a T: PartialEq<i32> 一样,也用于 higher-ranked trait bounds

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 {} never stops being 5", i);
    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 {
            let next;
            match iter.next() {
                Some(val) => next = val,
                None => break,
            };
            let loop_variable = next;
            let () = { code(); };
        },
    };
    result
}
Run

有关所显示功能的更多详细信息,请参见 IntoIterator 文档。

有关 for 循环的更多信息,请参见 Rust bookReference

另请参见 loopwhile.