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

Макрос matches!

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

Синтаксис

matches!(value, pattern)

Пример

Давайте проверим, соответствует ли число 5 диапазону от 1 до 10:

fn main() { let res = matches!(5, 1..=10); println!("{}", res); }

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

true

Пример

Давайте проверим, соответствует ли значение "abcde" шаблону строки, начинающейся с "abc":

fn main() { let res = matches!("abcde", "abc" ..); println!("{}", res); }

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

true

Пример

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

enum Status { Active, Inactive, Pending, } fn main() { let status = Status::Active; let res = matches!(status, Status::Active); println!("{}", res); }

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

true

Пример

Давайте проверим, содержит ли вектор vec![1, 2, 3, 4, 5] элемент со значением 3:

fn main() { let v = vec![1, 2, 3, 4, 5]; let res = matches!(v.iter().find(|&&x| x == 3), Some(_)); println!("{}", res); }

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

true

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

  • макрос assert!,
    который проверяет истинность условия в тестах
  • макрос assert_eq!,
    который проверяет равенство двух значений
  • макрос should_panic,
    который проверяет, что код паникует
  • атрибут test,
    который помечает функцию как тестовую
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить