]> git.lizzy.rs Git - rust.git/blob - src/test/ui/nll/closure-requirements/propagate-approximated-shorter-to-static-comparing-against-free.stderr
Do not rename bound variables when verbose-printing binders.
[rust.git] / src / test / ui / nll / closure-requirements / propagate-approximated-shorter-to-static-comparing-against-free.stderr
1 note: no external requirements
2   --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:21:15
3    |
4 LL |     foo(cell, |cell_a, cell_x| {
5    |               ^^^^^^^^^^^^^^^^
6    |
7    = note: defining type: case1::{closure#0} with closure substs [
8                i32,
9                for<Region(BrAnon(0, None))> extern "rust-call" fn((std::cell::Cell<&'_#1r u32>, std::cell::Cell<&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrAnon(0, None) }) u32>)),
10                (),
11            ]
12
13 error[E0521]: borrowed data escapes outside of closure
14   --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:22:9
15    |
16 LL |     foo(cell, |cell_a, cell_x| {
17    |                ------  ------ `cell_x` is a reference that is only valid in the closure body
18    |                |
19    |                `cell_a` declared here, outside of the closure body
20 LL |         cell_a.set(cell_x.get()); // forces 'x: 'a, error in closure
21    |         ^^^^^^^^^^^^^^^^^^^^^^^^ `cell_x` escapes the closure body here
22
23 note: no external requirements
24   --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:18:1
25    |
26 LL | fn case1() {
27    | ^^^^^^^^^^
28    |
29    = note: defining type: case1
30
31 note: external requirements
32   --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:35:15
33    |
34 LL |     foo(cell, |cell_a, cell_x| {
35    |               ^^^^^^^^^^^^^^^^
36    |
37    = note: defining type: case2::{closure#0} with closure substs [
38                i32,
39                for<Region(BrAnon(0, None))> extern "rust-call" fn((std::cell::Cell<&'_#1r u32>, std::cell::Cell<&ReLateBound(DebruijnIndex(0), BoundRegion { var: 0, kind: BrAnon(0, None) }) u32>)),
40                (),
41            ]
42    = note: number of external vids: 2
43    = note: where '_#1r: '_#0r
44
45 note: no external requirements
46   --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:28:1
47    |
48 LL | fn case2() {
49    | ^^^^^^^^^^
50    |
51    = note: defining type: case2
52
53 error[E0597]: `a` does not live long enough
54   --> $DIR/propagate-approximated-shorter-to-static-comparing-against-free.rs:30:26
55    |
56 LL |       let cell = Cell::new(&a);
57    |                            ^^ borrowed value does not live long enough
58 ...
59 LL | /     foo(cell, |cell_a, cell_x| {
60 LL | |         cell_x.set(cell_a.get()); // forces 'a: 'x, implies 'a = 'static -> borrow error
61 LL | |     })
62    | |______- argument requires that `a` is borrowed for `'static`
63 LL |   }
64    |   - `a` dropped here while still borrowed
65
66 error: aborting due to 2 previous errors
67
68 Some errors have detailed explanations: E0521, E0597.
69 For more information about an error, try `rustc --explain E0521`.