Macro core::assert_matches::assert_matches
source · 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.
§Examples
#![feature(assert_matches)]
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);
Run