]> git.lizzy.rs Git - rust.git/blob - tests/ui/span/borrowck-call-is-borrow-issue-12224.stderr
Rollup merge of #106441 - mllken:abstract-socket-noref, r=joshtriplett
[rust.git] / tests / ui / span / borrowck-call-is-borrow-issue-12224.stderr
1 error[E0499]: cannot borrow `f` as mutable more than once at a time
2   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:12:16
3    |
4 LL |     f(Box::new(|| {
5    |     -          ^^ second mutable borrow occurs here
6    |     |
7    |     first mutable borrow occurs here
8    |     first borrow later used by call
9 LL |
10 LL |         f((Box::new(|| {})))
11    |         - second borrow occurs due to use of `f` in closure
12
13 error[E0596]: cannot borrow `*f` as mutable, as it is behind a `&` reference
14   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:25:5
15    |
16 LL |     (*f)();
17    |     ^^^^ `f` is a `&` reference, so the data it refers to cannot be borrowed as mutable
18    |
19 help: consider changing this to be a mutable reference
20    |
21 LL | fn test2<F>(f: &mut F) where F: FnMut() {
22    |                ~~~~~~
23
24 error[E0596]: cannot borrow `f.f` as mutable, as it is behind a `&` reference
25   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:34:5
26    |
27 LL |     f.f.call_mut(())
28    |     ^^^^^^^^^^^^^^^^ `f` is a `&` reference, so the data it refers to cannot be borrowed as mutable
29    |
30 help: consider changing this to be a mutable reference
31    |
32 LL | fn test4(f: &mut Test<'_>) {
33    |             ~~~~~~~~~~~~~
34
35 error[E0507]: cannot move out of `f`, a captured variable in an `FnMut` closure
36   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:57:13
37    |
38 LL |     let mut f = move |g: Box<dyn FnMut(isize)>, b: isize| {
39    |         ----- captured outer variable
40 ...
41 LL |     f(Box::new(|a| {
42    |                --- captured by this `FnMut` closure
43 LL |
44 LL |         foo(f);
45    |             ^ move occurs because `f` has type `[closure@$DIR/borrowck-call-is-borrow-issue-12224.rs:52:17: 52:58]`, which does not implement the `Copy` trait
46
47 error[E0505]: cannot move out of `f` because it is borrowed
48   --> $DIR/borrowck-call-is-borrow-issue-12224.rs:55:16
49    |
50 LL |     f(Box::new(|a| {
51    |     -          ^^^ move out of `f` occurs here
52    |     |
53    |     borrow of `f` occurs here
54 LL |
55 LL |         foo(f);
56    |             - move occurs due to use in closure
57
58 error: aborting due to 5 previous errors
59
60 Some errors have detailed explanations: E0499, E0505, E0507, E0596.
61 For more information about an error, try `rustc --explain E0499`.