#![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); | |
} |