1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#![feature(if_let_guard)]
struct A { a: Box<i32> }
fn if_guard(n: i32) {
let x = A { a: Box::new(n) };
let _y = match x {
A { a: v } if { drop(v); true } => v,
//~^ ERROR cannot move out of `v` in pattern guard
_ => Box::new(0),
};
}
fn if_let_guard(n: i32) {
let x = A { a: Box::new(n) };
let _y = match x {
A { a: v } if let Some(()) = { drop(v); Some(()) } => v,
//~^ ERROR cannot move out of `v` in pattern guard
_ => Box::new(0),
};
}
fn main() {
if_guard(107);
if_let_guard(107);
}
|