Сопоставление match
Ключевое слово match запускает механизм сопоставления с образцом. Оно принимает значение и последовательно сравнивает его с шаблонами, указанными в блоках. Как только находится первый подходящий шаблон, выполняется соответствующий ему код. Сопоставление match часто используется вместе с перечислениями, так как позволяет удобно обрабатывать все варианты enum. Параметром match принимает значение, которое нужно сопоставить с шаблонами.
Синтаксис
match value
{
pattern1 => expression1,
pattern2 => expression2,
_ => default_expression,
}
Пример
Давайте сопоставим число 2 с несколькими шаблонами и выведем результат:
fn main()
{
let value = 2;
let res = match value
{
1 => "one",
2 => "two",
3 => "three",
_ => "other",
};
println!("{}", res);
}
Результат выполнения кода:
"two"
Пример
Давайте сопоставим значение с вариантами перечисления Option:
fn main()
{
let value: Option<i32> = Some(5);
let res = match value
{
Some(n) => n * 2,
None => 0,
};
println!("{}", res);
}
Результат выполнения кода:
10
Пример
Давайте сопоставим значение с вариантами перечисления Result:
fn main()
{
let value: Result<i32, &str> = Ok(7);
let res = match value
{
Ok(n) => n + 1,
Err(e) => 0,
};
println!("{}", res);
}
Результат выполнения кода:
8