Косвенный доступ к переменной делает невозможным ветвление и использование переменной без повторной привязки. match предоставляет символ @ для привязки значения к имени:
// Функция `age`, возвращающая `u32`.
fn age() -> u32 {
15
}
fn main() {
println!("Скажи мне свой возраст");
match age() {
0 => println!("Я ещё не отпраздновал свой первый день рождения"),
// Можно было бы использовать только 1 ... 12 в `match`,
// но какого возраста тогда был бы ребёнок? Вместо этого мы
// привязываем `n` к последовательности 1 .. 12.
// Теперь мы можем сообщить возраст.
n @ 1 ..= 12 => println!("Я ребёнок. Мне {:?}", n),
n @ 13 ..= 19 => println!("Я подросток. Мне {:?}", n),
// Ничего не привязываем.
n => println!("Я взрослый. Мне {:?}", n),
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Вы также можете использовать привязку для "деструктурирования" вариантов enum, таких как Option:
fn some_number() -> Option {
Some(42)
}
fn main() {
match some_number() {
// Вариант `Some`, выбираем, если его значение, привязанное к `n`,
// равно 42.
Some(n @ 42) => println!("Ответ: {}!", n),
// При других числах.
Some(n) => println!("Не интересно... {}", n),
// Для всего остального (вариант `None`).
_ => (),
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Функции, enum и Option