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

Макрос matches!

Макрос matches! проверяет, соответствует ли переданное значение заданному шаблону. Он возвращает true, если значение совпало с шаблоном, и false в противном случае. Первым параметром макрос принимает значение, которое нужно проверить, а вторым - шаблон, с которым это значение сравнивается. Макрос особенно удобен при работе с перечислениями, так как позволяет кратко записать проверку варианта без использования конструкции match.

Синтаксис

matches!(value, pattern)

Пример

Давайте проверим, соответствует ли вариант перечисления Some шаблону Some(x):

enum Option { Some(i32), None, } fn main() { let val = Option::Some(5); let res = matches!(val, Option::Some(x)); println!("{}", res); }

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

true

Пример

Давайте проверим, соответствует ли вариант перечисления None шаблону Some(x):

enum Option { Some(i32), None, } fn main() { let val = Option::None; let res = matches!(val, Option::Some(x)); println!("{}", res); }

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

false

Пример

Макрос matches! поддерживает дополнительное условие через if. Давайте проверим, что значение больше нуля:

enum Option { Some(i32), None, } fn main() { let val = Option::Some(5); let res = matches!(val, Option::Some(x) if x > 0); println!("{}", res); }

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

true

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

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