Макрос 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,
который помечает функцию как тестовую