| //@ run-pass | |
| #[derive(Debug)] | |
| enum Other { | |
| One, | |
| Two, | |
| Three, | |
| } | |
| #[derive(Debug)] | |
| enum Test { | |
| Foo { first: usize, second: usize }, | |
| Bar { other: Option<Other> }, | |
| Baz, | |
| } | |
| fn test(x: Option<Test>) -> 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)); | |
| } |