Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpPtBn 76 of 288 menu
◀ ▶

Связь образца в Rust

Иногда нужно и проверить форму, и сохранить само значение целиком. Слева от знака @ пишут имя, справа - образец, который должен совпасть. Имя получает исходное значение, а не только его часть.

Связь часто ставят перед диапазоном или перед вложенным образцом. Так в теле ветки удобно и пользоваться суженной формой, и обращаться ко всему числу или структуре.

Возьмем число в диапазоне от одного до пяти:

fn main() { let n = 3; let pick = match n { x @ 1..=5 => x, _ => 0, }; println!("{}", pick); }

На экране 3. Имя x держит n, потому что число попало в диапазон, и ветка вернула связанное значение.

Тот же прием с несколькими связями и запасной веткой:

fn main() { let code = 404; let hint = match code { c @ 200..=299 => "ok", c @ 400..=499 => "client", _ => "other", }; println!("{} {}", code, hint); }

Дано число:

let n = 10;

Свяжите значение с v в образце 10..=20 и выведите v, иначе выведите ноль.

Дано число:

let port = 443;

Сделайте ветку p @ 443 с текстом "secure" и запасную с "plain", выведите метку.

Скажите, какое значение получит имя слева от @, если образец справа не совпал.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить