breakcontinue

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}");
}

continuebreak はオプションでラベル引数を取ることができます。ラベルはネストしたループから抜け出すために使われます。

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 ループは必ずしも実行されるわけではありません)。