//@ run-pass #[derive(Debug)] enum Other { One, Two, Three, } #[derive(Debug)] enum Test { Foo { first: usize, second: usize }, Bar { other: Option }, Baz, } fn test(x: Option) -> bool { match x { Some( Test::Foo { first: 1024 | 2048, second: 2048 | 4096 } | Test::Bar { other: Some(Other::One | Other::Two) }, ) => true, // wild case Some(_) => false, // empty case None => false, } } fn main() { assert!(test(Some(Test::Foo { first: 1024, second: 4096 }))); assert!(!test(Some(Test::Foo { first: 2048, second: 8192 }))); assert!(!test(Some(Test::Foo { first: 42, second: 2048 }))); assert!(test(Some(Test::Bar { other: Some(Other::One) }))); assert!(test(Some(Test::Bar { other: Some(Other::Two) }))); assert!(!test(Some(Test::Bar { other: Some(Other::Three) }))); assert!(!test(Some(Test::Bar { other: None }))); assert!(!test(Some(Test::Baz))); assert!(!test(None)); }