#![feature(if_let_guard)] struct A { a: Box } 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); }