38 lines
680 B
Rust
38 lines
680 B
Rust
// edition:2021
|
|
|
|
enum SingleVariant {
|
|
A
|
|
}
|
|
|
|
struct TestStruct {
|
|
x: i32,
|
|
y: i32,
|
|
z: i32,
|
|
}
|
|
|
|
fn edge_case_if() {
|
|
let sv = SingleVariant::A;
|
|
let condition = true;
|
|
// sv should not be captured as it is a SingleVariant
|
|
let _a = || {
|
|
match sv {
|
|
SingleVariant::A if condition => (),
|
|
_ => ()
|
|
}
|
|
};
|
|
let mut mut_sv = sv;
|
|
_a();
|
|
|
|
// ts should be captured
|
|
let ts = TestStruct { x: 1, y: 1, z: 1 };
|
|
let _b = || { match ts {
|
|
TestStruct{ x: 1, .. } => (),
|
|
_ => ()
|
|
}};
|
|
let mut mut_ts = ts;
|
|
//~^ ERROR: cannot move out of `ts` because it is borrowed
|
|
_b();
|
|
}
|
|
|
|
fn main() {}
|