РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
534 of 1245 menu

Страж match

Страж match - это дополнительное условие, которое записывается после шаблона в ветке match с помощью ключевого слова if. Если шаблон совпал, но условие стража ложно, то управление передаётся следующей ветке. Страж позволяет уточнить сопоставление, не усложняя сам шаблон. Параметром страж принимает логическое выражение, которое может использовать переменные, связанные в шаблоне.

Синтаксис

match value { pattern if condition => result, _ => default, }

Пример

Давайте проверим число с помощью стража if в ветке match:

fn main() { let num = 5; let res = match num { n if n > 0 => "positive", n if n < 0 => "negative", _ => "zero", }; println!("{}", res); }

Результат выполнения кода:

"positive"

Пример

Давайте используем стражи в нескольких ветках match для диапазонов значений:

fn main() { let num = 15; let res = match num { n if n < 10 => "small", n if n < 20 => "medium", _ => "large", }; println!("{}", res); }

Результат выполнения кода:

"medium"

Пример

Давайте применим страж к варианту перечисления Option, чтобы проверить положительное число:

fn main() { let val: Option<i32> = Some(7); let res = match val { Some(n) if n > 0 => "positive", Some(n) if n < 0 => "negative", Some(_) => "zero", None => "none", }; println!("{}", res); }

Результат выполнения кода:

"positive"

Смотрите также

  • оператор match,
    который выполняет сопоставление с образцом
  • конструкция if-let,
    которая упрощает сопоставление с одним шаблоном
  • перечисление Some,
    которое представляет наличие значения
  • перечисление destructure,
    которое позволяет извлекать данные из шаблонов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить