ラベル

continuebreak はどちらも、ネストしたループを抜けるために使う 省略可能なラベル引数を受け取れます:

// 著作権 2024 Google LLC
// SPDX-License-Identifier: Apache-2.0

fn main() {
    let s = [[5, 6, 7], [8, 9, 10], [21, 15, 32]];
    let mut elements_searched = 0;
    let target_value = 10;
    'outer: for i in 0..=2 {
        for j in 0..=2 {
            elements_searched += 1;
            if s[i][j] == target_value {
                break 'outer;
            }
        }
    }
    dbg!(elements_searched);
}
  • ラベル付き break も任意のブロックで機能します。たとえば次のとおりです。
    #![allow(unused)]
    fn main() {
    // 著作権 2024 Google LLC
    // SPDX-License-Identifier: Apache-2.0
    
    'label: {
        break 'label;
        println!("This line gets skipped");
    }
    }