rust/tests/ui/rfcs/rfc-0107-bind-by-move-pattern-guards/rfc-reject-double-move-in-first-arm.rs

27 lines
572 B
Rust
Raw Normal View History

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