mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-11 08:05:12 +00:00
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))
|
||
|
}
|