Макрос 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,
которое позволяет создавать собственные типы с вариантами