//@ run-pass macro_rules! pat_in { ($p:pat in $e:expr) => {{ let mut iter = $e.into_iter(); while let $p = iter.next() {} }}; } macro_rules! pat_if { ($p:pat if $e:expr) => {{ match Some(1u8) { $p if $e => {} _ => {} } }}; } fn main() { pat_in!(Some(_) in 0..10); pat_if!(Some(x) if x > 0); }