]> git.lizzy.rs Git - rust.git/blob - tests/ui/borrowck/borrowck-reborrow-from-mut.stderr
Rollup merge of #106726 - cmorin6:fix-comment-typos, r=Nilstrieb
[rust.git] / tests / ui / borrowck / borrowck-reborrow-from-mut.stderr
1 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
2   --> $DIR/borrowck-reborrow-from-mut.rs:13:17
3    |
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
8 LL |     use_mut(_bar1);
9    |             ----- first borrow later used here
10
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
13    |
14 LL |     let _bar1 = &mut foo.bar1;
15    |                 ------------- mutable borrow occurs here
16 LL |     let _bar2 = &foo.bar1;
17    |                 ^^^^^^^^^ immutable borrow occurs here
18 LL |     use_mut(_bar1);
19    |             ----- mutable borrow later used here
20
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
23    |
24 LL |     let _bar1 = &foo.bar1;
25    |                 --------- immutable borrow occurs here
26 LL |     let _bar2 = &mut foo.bar1;
27    |                 ^^^^^^^^^^^^^ mutable borrow occurs here
28 LL |     use_imm(_bar1);
29    |             ----- immutable borrow later used here
30
31 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
32   --> $DIR/borrowck-reborrow-from-mut.rs:45:21
33    |
34 LL |     let _bar1 = &mut foo.bar1;
35    |                 ------------- first mutable borrow occurs here
36 LL |     match *foo {
37 LL |         Foo { bar1: ref mut _bar1, bar2: _ } => {}
38    |                     ^^^^^^^^^^^^^ second mutable borrow occurs here
39 ...
40 LL |     use_mut(_bar1);
41    |             ----- first borrow later used here
42
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
45    |
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;
51 LL |     use_mut(_bar1);
52    |             ----- mutable borrow later used here
53
54 error[E0502]: cannot borrow `*foo` as immutable because it is also borrowed as mutable
55   --> $DIR/borrowck-reborrow-from-mut.rs:53:17
56    |
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
62 LL |     use_mut(_bar1);
63    |             ----- mutable borrow later used here
64
65 error[E0499]: cannot borrow `foo.bar1` as mutable more than once at a time
66   --> $DIR/borrowck-reborrow-from-mut.rs:58:17
67    |
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
72 LL |     use_mut(_bar1);
73    |             ----- first borrow later used here
74
75 error[E0499]: cannot borrow `*foo` as mutable more than once at a time
76   --> $DIR/borrowck-reborrow-from-mut.rs:63:17
77    |
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
82 LL |     use_mut(_bar1);
83    |             ----- first borrow later used here
84
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
87    |
88 LL |     let _bar1 = &foo.bar1.int1;
89    |                 -------------- immutable borrow occurs here
90 LL |     let _foo1 = &mut foo.bar1;
91    |                 ^^^^^^^^^^^^^ mutable borrow occurs here
92 LL |     use_imm(_bar1);
93    |             ----- immutable borrow later used here
94
95 error[E0502]: cannot borrow `*foo` as mutable because it is also borrowed as immutable
96   --> $DIR/borrowck-reborrow-from-mut.rs:73:17
97    |
98 LL |     let _bar1 = &foo.bar1.int1;
99    |                 -------------- immutable borrow occurs here
100 LL |     let _foo2 = &mut *foo;
101    |                 ^^^^^^^^^ mutable borrow occurs here
102 LL |     use_imm(_bar1);
103    |             ----- immutable borrow later used here
104
105 error[E0596]: cannot borrow `foo.bar1` as mutable, as it is behind a `&` reference
106   --> $DIR/borrowck-reborrow-from-mut.rs:88:17
107    |
108 LL |     let _bar1 = &mut foo.bar1;
109    |                 ^^^^^^^^^^^^^ `foo` is a `&` reference, so the data it refers to cannot be borrowed as mutable
110    |
111 help: consider changing this to be a mutable reference
112    |
113 LL | fn borrow_mut_from_imm(foo: &mut Foo) {
114    |                             ~~~~~~~~
115
116 error: aborting due to 11 previous errors
117
118 Some errors have detailed explanations: E0499, E0502, E0596.
119 For more information about an error, try `rustc --explain E0499`.