Macro tract_hir::internal::tract_downcast_rs::__std::debug_assert_matches [−][src]
🔬 This is a nightly-only experimental API. (
assert_matches
)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.
Unlike assert_matches!
, debug_assert_matches!
statements are only
enabled in non optimized builds by default. An optimized build will not
execute debug_assert_matches!
statements unless -C debug-assertions
is
passed to the compiler. This makes debug_assert_matches!
useful for
checks that are too expensive to be present in a release build but may be
helpful during development. The result of expanding debug_assert_matches!
is always type checked.
Examples
#![feature(assert_matches)] let a = 1u32.checked_add(2); let b = 1u32.checked_sub(2); debug_assert_matches!(a, Some(_)); debug_assert_matches!(b, None); let c = Ok("abc".to_string()); debug_assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);