| //@ run-pass | |
| fn main() { | |
| #[allow(dead_code)] | |
| enum MyEnum { | |
| A(String), | |
| B { f: String }, | |
| C, | |
| } | |
| // ref binding to non-copy value and or-pattern | |
| let (MyEnum::A(ref x) | MyEnum::B { f: ref x }) = (MyEnum::B { f: String::new() }) else { | |
| panic!(); | |
| }; | |
| assert_eq!(x, ""); | |
| // nested let-else | |
| let mut x = 1; | |
| loop { | |
| let 4 = x else { | |
| let 3 = x else { | |
| x += 1; | |
| continue; | |
| }; | |
| break; | |
| }; | |
| panic!(); | |
| } | |
| assert_eq!(x, 3); | |
| // else return | |
| let Some(1) = Some(2) else { return }; | |
| panic!(); | |
| } |