| //@ 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() {} |