Связывание

Косвенный доступ к переменной делает невозможным ветвление и использование переменной без повторной привязки. 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

Загрузка...