diff --git a/src/macros.rs b/src/macros.rs new file mode 100644 index 0000000000000000000000000000000000000000..7935e81f341f844fe743ee3467a37ddc51b97033 --- /dev/null +++ b/src/macros.rs @@ -0,0 +1,28 @@ +macro_rules! assert_let { + ($pat:pat = $expr:expr => $work:expr) => { + if let $pat = $expr { + $work + } else { + panic!("assert_let failed"); + } + }; +} + +#[test] +fn assert_let() { + let x = Some(5); + let z = assert_let![Some(y) = x => { + println!("{:?}", y); + 3 + }]; + println!("{:?}", z); +} + +#[test] +#[should_panic] +fn must_let_panic() { + let x: Option = None; + assert_let![Some(y) = x => { + println!("{:?}", y); + }]; +}