macro_rules! assert_matches { ($expression:expr, $( $pattern:pat )|+ $( if $guard:expr )?) => { match $expression { $( $pattern )|+ $( if $guard )? => {} left => panic!( "assertion failed: (left ~= right)\n left: `{:?}`\n right: `{}`", left, stringify!($($pattern)|+ $(if $guard)?) ), } } }