Оператор 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