2 struct A { a: isize, b: isize }
4 struct B { a: isize, b: Box<isize> }
8 fn var_copy_after_var_borrow() {
11 drop(x); //~ ERROR cannot use `x` because it was mutably borrowed
15 fn var_copy_after_field_borrow() {
16 let mut x = A { a: 1, b: 2 };
18 drop(x); //~ ERROR cannot use `x` because it was mutably borrowed
22 fn field_copy_after_var_borrow() {
23 let mut x = A { a: 1, b: 2 };
25 drop(x.a); //~ ERROR cannot use `x.a` because it was mutably borrowed
29 fn field_copy_after_field_borrow() {
30 let mut x = A { a: 1, b: 2 };
32 drop(x.a); //~ ERROR cannot use `x.a` because it was mutably borrowed
36 fn fu_field_copy_after_var_borrow() {
37 let mut x = A { a: 1, b: 2 };
39 let y = A { b: 3, .. x }; //~ ERROR cannot use `x.a` because it was mutably borrowed
44 fn fu_field_copy_after_field_borrow() {
45 let mut x = A { a: 1, b: 2 };
47 let y = A { b: 3, .. x }; //~ ERROR cannot use `x.a` because it was mutably borrowed
52 fn var_deref_after_var_borrow() {
53 let mut x: Box<isize> = Box::new(1);
55 drop(*x); //~ ERROR cannot use `*x` because it was mutably borrowed
59 fn field_deref_after_var_borrow() {
60 let mut x = B { a: 1, b: Box::new(2) };
62 drop(*x.b); //~ ERROR cannot use `*x.b` because it was mutably borrowed
66 fn field_deref_after_field_borrow() {
67 let mut x = B { a: 1, b: Box::new(2) };
69 drop(*x.b); //~ ERROR cannot use `*x.b` because it was mutably borrowed
74 var_copy_after_var_borrow();
75 var_copy_after_field_borrow();
77 field_copy_after_var_borrow();
78 field_copy_after_field_borrow();
80 fu_field_copy_after_var_borrow();
81 fu_field_copy_after_field_borrow();
83 var_deref_after_var_borrow();
84 field_deref_after_var_borrow();
85 field_deref_after_field_borrow();