mirror of https://github.com/rust-lang/rust
32 lines
592 B
Rust
32 lines
592 B
Rust
// Test basic or-patterns when the target pattern type will be lowered to a
|
|
// `Switch` (an `enum`).
|
|
|
|
//@ run-pass
|
|
|
|
#[derive(Debug)]
|
|
enum Test {
|
|
Foo,
|
|
Bar,
|
|
Baz,
|
|
Qux,
|
|
}
|
|
|
|
fn test(x: Option<Test>) -> bool {
|
|
match x {
|
|
// most simple case
|
|
Some(Test::Bar | Test::Qux) => true,
|
|
// wild case
|
|
Some(_) => false,
|
|
// empty case
|
|
None => false,
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
assert!(!test(Some(Test::Foo)));
|
|
assert!(test(Some(Test::Bar)));
|
|
assert!(!test(Some(Test::Baz)));
|
|
assert!(test(Some(Test::Qux)));
|
|
assert!(!test(None))
|
|
}
|