РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
11 of 1245 menu

Метка цикла

Метка цикла в Rust - это именованный идентификатор, который ставится перед циклом loop, while или for. Метка записывается в формате 'label (апостроф и имя) и позволяет адресно применять операторы break и continue к конкретному циклу, а не только к ближайшему. Это особенно полезно при работе с вложенными циклами, когда нужно прервать или продолжить внешний цикл из внутреннего.

Синтаксис

'label: loop { // ... break 'label; // ... continue 'label; }

Пример

Давайте прервём внешний цикл из внутреннего с помощью метки 'outer и оператора break:

fn main() { 'outer: for i in 1..4 { for j in 1..4 { if i * j == 4 { println!("break at i={}, j={}", i, j); break 'outer; } println!("i={}, j={}", i, j); } } }

Результат выполнения кода:

i=1, j=1 i=1, j=2 i=1, j=3 i=2, j=1 break at i=2, j=2

Пример

Давайте с помощью метки 'outer и оператора continue пропустим итерацию внешнего цикла из внутреннего:

fn main() { 'outer: for i in 1..4 { for j in 1..4 { if j == 2 { continue 'outer; } println!("i={}, j={}", i, j); } } }

Результат выполнения кода:

i=1, j=1 i=2, j=1 i=3, j=1

Пример

Давайте используем метку с циклом loop и вернём значение из него через break с меткой:

fn main() { let mut count = 0; let res = 'counting: loop { count += 1; if count == 5 { break 'counting count * 10; } }; println!("{}", res); }

Результат выполнения кода:

50

Смотрите также

  • оператор break,
    который прерывает выполнение цикла
  • оператор continue,
    который переходит к следующей итерации цикла
  • цикл loop,
    который повторяет блок кода бесконечно
  • цикл for,
    который перебирает элементы итератора
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить