36 lines
673 B
Rust
36 lines
673 B
Rust
![]() |
// 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!();
|
||
|
}
|