pub macro assert_matches {
    ($left:expr, $(|)? $($pattern:pat_param)|+ $(if $guard:expr)? $(,)?) => { ... },
    ($left:expr, $(|)? $($pattern:pat_param)|+ $(if $guard:expr)?, $($arg:tt)+) => { ... },
🔬 This is a nightly-only experimental API. (assert_matches #82775)
Expand description

Asserts that an expression matches any of the given patterns.

Like in a match expression, the pattern can be optionally followed by if and a guard expression that has access to names bound by the pattern.

On panic, this macro will print the value of the expression with its debug representation.

Like assert!, this macro has a second form, where a custom panic message can be provided.



use std::assert_matches::assert_matches;

let a = 1u32.checked_add(2);
let b = 1u32.checked_sub(2);
assert_matches!(a, Some(_));
assert_matches!(b, None);

let c = Ok("abc".to_string());
assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);