1 // run-pass 2 macro_rules! pat_in { 3 ($p:pat in $e:expr) => {{ 4 let mut iter = $e.into_iter(); 5 while let $p = iter.next() {} 6 }}; 7 } 8 9 macro_rules! pat_if { 10 ($p:pat if $e:expr) => {{ 11 match Some(1u8) { 12 $p if $e => {} 13 _ => {} 14 } 15 }}; 16 } 17 main()18fn main() { 19 pat_in!(Some(_) in 0..10); 20 pat_if!(Some(x) if x > 0); 21 } 22