1 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
2 --> $DIR/borrowck-reborrow-from-mut.rs:13:17
4 LL | let _bar1 = &mut foo.bar1;
5 | ------------- first mutable borrow occurs here
6 LL | let _bar2 = &mut foo.bar1;
7 | ^^^^^^^^^^^^^ second mutable borrow occurs here
9 | ----- first borrow later used here
11 error[E0502]: cannot borrow `foo.bar1` as immutable because it is also borrowed as mutable
12 --> $DIR/borrowck-reborrow-from-mut.rs:18:17
14 LL | let _bar1 = &mut foo.bar1;
15 | ------------- mutable borrow occurs here
16 LL | let _bar2 = &foo.bar1;
17 | ^^^^^^^^^ immutable borrow occurs here
19 | ----- mutable borrow later used here
21 error[E0502]: cannot borrow `foo.bar1` as mutable because it is also borrowed as immutable
22 --> $DIR/borrowck-reborrow-from-mut.rs:23:17
24 LL | let _bar1 = &foo.bar1;
25 | --------- immutable borrow occurs here
26 LL | let _bar2 = &mut foo.bar1;
27 | ^^^^^^^^^^^^^ mutable borrow occurs here
29 | ----- immutable borrow later used here
31 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
32 --> $DIR/borrowck-reborrow-from-mut.rs:45:21
34 LL | let _bar1 = &mut foo.bar1;
35 | ------------- first mutable borrow occurs here
37 LL | Foo { bar1: ref mut _bar1, bar2: _ } => {}
38 | ^^^^^^^^^^^^^ second mutable borrow occurs here
41 | ----- first borrow later used here
43 error[E0502]: cannot borrow `foo.bar1` as immutable because it is also borrowed as mutable
44 --> $DIR/borrowck-reborrow-from-mut.rs:52:17
46 LL | let _bar1 = &mut foo.bar1.int1;
47 | ------------------ mutable borrow occurs here
48 LL | let _foo1 = &foo.bar1;
49 | ^^^^^^^^^ immutable borrow occurs here
50 LL | let _foo2 = &*foo;
52 | ----- mutable borrow later used here
54 error[E0502]: cannot borrow `*foo` as immutable because it is also borrowed as mutable
55 --> $DIR/borrowck-reborrow-from-mut.rs:53:17
57 LL | let _bar1 = &mut foo.bar1.int1;
58 | ------------------ mutable borrow occurs here
59 LL | let _foo1 = &foo.bar1;
60 LL | let _foo2 = &*foo;
61 | ^^^^^ immutable borrow occurs here
63 | ----- mutable borrow later used here
65 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
66 --> $DIR/borrowck-reborrow-from-mut.rs:58:17
68 LL | let _bar1 = &mut foo.bar1.int1;
69 | ------------------ first mutable borrow occurs here
70 LL | let _foo1 = &mut foo.bar1;
71 | ^^^^^^^^^^^^^ second mutable borrow occurs here
73 | ----- first borrow later used here
75 error[E0499]: cannot borrow `*foo` as mutable more than once at a time
76 --> $DIR/borrowck-reborrow-from-mut.rs:63:17
78 LL | let _bar1 = &mut foo.bar1.int1;
79 | ------------------ first mutable borrow occurs here
80 LL | let _foo2 = &mut *foo;
81 | ^^^^^^^^^ second mutable borrow occurs here
83 | ----- first borrow later used here
85 error[E0502]: cannot borrow `foo.bar1` as mutable because it is also borrowed as immutable
86 --> $DIR/borrowck-reborrow-from-mut.rs:68:17
88 LL | let _bar1 = &foo.bar1.int1;
89 | -------------- immutable borrow occurs here
90 LL | let _foo1 = &mut foo.bar1;
91 | ^^^^^^^^^^^^^ mutable borrow occurs here
93 | ----- immutable borrow later used here
95 error[E0502]: cannot borrow `*foo` as mutable because it is also borrowed as immutable
96 --> $DIR/borrowck-reborrow-from-mut.rs:73:17
98 LL | let _bar1 = &foo.bar1.int1;
99 | -------------- immutable borrow occurs here
100 LL | let _foo2 = &mut *foo;
101 | ^^^^^^^^^ mutable borrow occurs here
103 | ----- immutable borrow later used here
105 error[E0596]: cannot borrow `foo.bar1` as mutable, as it is behind a `&` reference
106 --> $DIR/borrowck-reborrow-from-mut.rs:88:17
108 LL | fn borrow_mut_from_imm(foo: &Foo) {
109 | ---- help: consider changing this to be a mutable reference: `&mut Foo`
110 LL | let _bar1 = &mut foo.bar1;
111 | ^^^^^^^^^^^^^ `foo` is a `&` reference, so the data it refers to cannot be borrowed as mutable
113 error: aborting due to 11 previous errors
115 Some errors have detailed explanations: E0499, E0502, E0596.
116 For more information about an error, try `rustc --explain E0499`.