Add additional match test case
This commit is contained in:
parent
20de556a26
commit
cd35e251ea
2 changed files with 51 additions and 0 deletions
|
|
@ -41,4 +41,38 @@ pub fn edge_case_char(event: char) {
|
|||
};
|
||||
}
|
||||
|
||||
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() {}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
error[E0505]: cannot move out of `ts` because it is borrowed
|
||||
--> $DIR/match-edge-cases.rs:32:22
|
||||
|
|
||||
LL | let _b = || { match ts {
|
||||
| -- -- borrow occurs due to use in closure
|
||||
| |
|
||||
| borrow of `ts` occurs here
|
||||
...
|
||||
LL | let mut mut_ts = ts;
|
||||
| ^^ move out of `ts` occurs here
|
||||
LL |
|
||||
LL | _b();
|
||||
| -- borrow later used here
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0505`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue