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

Оператор while let

Оператор while let в Rust используется для организации цикла, который продолжается до тех пор, пока значение соответствует указанному образцу. Он особенно удобен при работе с перечислениями, такими как Option или Result, когда нужно обрабатывать значения до тех пор, пока не встретится вариант, не подходящий под образец, например None или Err. Параметром оператор принимает образец и выражение, которое вычисляется на каждой итерации цикла.

Синтаксис

while let Some(value) = expression { // body }

Пример

Давайте рассмотрим простой пример использования оператора while let с перечислением Option. Цикл будет выполняться до тех пор, пока переменная содержит значение Some:

fn main() { let mut data = Some(1); while let Some(value) = data { println!("Value: {}", value); if value < 3 { data = Some(value + 1); } else { data = None; } } }

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

Value: 1 Value: 2 Value: 3

Пример

Давайте рассмотрим пример использования оператора while let с перечислением Result. Цикл будет выполняться до тех пор, пока операция завершается успешно:

fn divide(a: i32, b: i32) -> Result<i32, String> { if b == 0 { Err(String::from("Division by zero")) } else { Ok(a / b) } } fn main() { let mut divisor = 1; while let Ok(res) = divide(100, divisor) { println!("Result: {}", res); divisor += 1; if divisor > 100 { break; } } }

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

Result: 100 Result: 50 Result: 33 ... (сокращено для краткости) Result: 1

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

  • оператор if let,
    который выполняет блок кода, если значение соответствует образцу
  • оператор match,
    который выполняет сопоставление с образцом для всех возможных вариантов
  • перечисление Some,
    которое представляет наличие значения в Option
  • перечисление None,
    которое представляет отсутствие значения в Option
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить