36 lines
653 B
Rust
36 lines
653 B
Rust
//@ 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!();
|
|
}
|