// run-pass #![feature(let_else)] 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!(); }