基本
Rust 中有 4 個迴圈結構。以下所有示例都會產生相同的輸出。
無限迴圈
let mut x = 0;
loop {
if x > 3 { break; }
println!("{}", x);
x += 1;
}
迴圈時
let mut x = 0;
while x <= 3 {
println!("{}", x);
x += 1;
}
模式匹配的迴圈
為簡潔起見,這些有時被稱為 while let
迴圈。
let mut x = Some(0);
while let Some(v) = x {
println!("{}", v);
x = if v < 3 { Some(v + 1) }
else { None };
}
這相當於 loop
塊內的 match
:
let mut x = Some(0);
loop {
match x {
Some(v) => {
println!("{}", v);
x = if v < 3 { Some(v + 1) }
else { None };
}
_ => break,
}
}
對於迴圈
在 Rust 中,for
迴圈只能與可迭代物件一起使用(即它應該實現 IntoIterator
)。
for x in 0..4 {
println!("{}", x);
}
這相當於涉及 while let
的以下程式碼段:
let mut iter = (0..4).into_iter();
while let Some(v) = iter.next() {
println!("{}", v);
}
注意: 0..4
返回一個 Range
物件 ,該物件已經實現了 Iterator
特徵 。因此, into_iter()
是不必要的,但僅僅是為了說明 for
的作用。如需深入瞭解,請參閱 for
Loops 和 IntoIterator
的官方文件。
另見: 迭代器