Оператор if let
Оператор if let - это удобная сокращённая форма
конструкции match, которая выполняет код только
тогда, когда значение совпадает с указанным образцом.
Он принимает образец и выражение для сопоставления,
а также блок кода, выполняемый при успешном совпадении.
Если совпадение не произошло, блок пропускается.
Также можно добавить ветку else для обработки
случая, когда образец не совпал.
Оператор if let особенно полезен при работе
с типами Option и Result, когда нужно
обработать только одно конкретное значение, а остальные
проигнорировать.
Синтаксис
if let pattern = expression
{
// code
}
Синтаксис с веткой else:
if let pattern = expression
{
// code
}
else
{
// code
}
Пример
Давайте проверим, содержит ли переменная типа
Option значение, и выведем его:
fn main()
{
let opt = Some(5);
if let Some(x) = opt
{
println!("{}", x);
}
}
Результат выполнения кода:
5
Пример
Давайте рассмотрим случай, когда значение не совпадает
с образцом, и используем ветку else:
fn main()
{
let opt = None;
if let Some(x) = opt
{
println!("{}", x);
}
else
{
println!("no value");
}
}
Результат выполнения кода:
"no value"
Пример
Давайте применим if let для обработки
конкретного варианта перечисления:
enum Color
{
Red,
Green,
Blue,
}
fn main()
{
let color = Color::Green;
if let Color::Green = color
{
println!("green");
}
}
Результат выполнения кода:
"green"