break
と continue
If you want to exit any kind of loop early, use break
. For loop
, this can take an optional expression that becomes the value of the loop
expression.
次のイテレーションをすぐさま開始したい場合は continue
を使用してください。
fn main() { let (mut a, mut b) = (100, 52); let result = loop { if a == b { break a; } if a < b { b -= a; } else { a -= b; } }; println!("{result}"); }
continue
と break
はオプションでラベル引数を取ることができます。ラベルはネストしたループから抜け出すために使われます。
fn main() { 'outer: for x in 1..5 { println!("x: {x}"); let mut i = 0; while i < x { println!("x: {x}, i: {i}"); i += 1; if i == 3 { break 'outer; } } } }
上の例では、内側のループを 3 回イテレーションしたのちに外側のループを抜けることになります。
This slide should take about 5 minutes.
- 注意が必要なのは、
loop
が唯一、非自明な値を返すことができるループ構造であるという点です。これは、loop
が少なくとも一度は必ず実行されることが保証されているからです(これに対して、while や for ループは必ずしも実行されるわけではありません)。