Оператор if let
Оператор if let используется для сопоставления значения с образцом.
Он позволяет проверить, соответствует ли значение определённому варианту
перечисления или другому образцу, и выполнить блок кода только в случае
совпадения. В отличие от match, оператор if let удобен тогда,
когда нужно обработать только один вариант, а все остальные случаи
можно проигнорировать. Параметром оператор принимает образец и значение,
которое нужно сопоставить с этим образцом.
Синтаксис
if let pattern = value
{
// code
}
Пример
Давайте создадим перечисление Option и проверим,
содержит ли значение вариант Some:
fn main()
{
let res = Some(5);
if let Some(x) = res
{
println!("value: {}", x);
}
}
Результат выполнения кода:
value: 5
Пример
Давайте проверим поведение оператора if let,
когда значение содержит вариант None:
fn main()
{
let res = None;
if let Some(x) = res
{
println!("value: {}", x);
}
else
{
println!("no value");
}
}
Результат выполнения кода:
no value
Пример
Давайте используем оператор if let с пользовательским перечислением:
enum Color
{
Red,
Green,
Blue,
}
fn main()
{
let res = Color::Green;
if let Color::Green = res
{
println!("green");
}
else
{
println!("not green");
}
}
Результат выполнения кода:
"green"
Пример
Давайте используем оператор if let с кортежным вариантом перечисления:
enum Message
{
Text(String),
Number(i32),
}
fn main()
{
let res = Message::Number(12345);
if let Message::Number(n) = res
{
println!("number: {}", n);
}
else
{
println!("not a number");
}
}
Результат выполнения кода:
number: 12345