635c38187b
We check that there's a single level of block nesting to ensure always correct suggestions. If we don't, then we only provide a free-form message to avoid misleading users in cases like `src/test/ui/nll/borrowed-temporary-error.rs`. We could expand the analysis to suggest hoising all of the relevant parts of the users' code to make the code compile, but that could be too much.
64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
error[E0597]: `young[_]` does not live long enough
|
|
--> $DIR/borrowck-let-suggestion-suffixes.rs:12:17
|
|
|
|
|
LL | v2.push(&young[0]); // statement 4
|
|
| ^^^^^^^^^ borrowed value does not live long enough
|
|
...
|
|
LL | }
|
|
| - `young[_]` dropped here while still borrowed
|
|
...
|
|
LL | (v1, v2, v3, /* v4 is above. */ v5).use_ref();
|
|
| -- borrow later used here
|
|
|
|
error[E0716]: temporary value dropped while borrowed
|
|
--> $DIR/borrowck-let-suggestion-suffixes.rs:19:14
|
|
|
|
|
LL | v3.push(&id('x')); // statement 6
|
|
| ^^^^^^^ - temporary value is freed at the end of this statement
|
|
| |
|
|
| creates a temporary which is freed while still in use
|
|
...
|
|
LL | (v1, v2, v3, /* v4 is above. */ v5).use_ref();
|
|
| -- borrow later used here
|
|
|
|
|
help: consider using a `let` binding to create a longer lived value
|
|
|
|
|
LL ~ let binding = id('x');
|
|
LL ~ v3.push(&binding); // statement 6
|
|
|
|
|
|
|
error[E0716]: temporary value dropped while borrowed
|
|
--> $DIR/borrowck-let-suggestion-suffixes.rs:29:18
|
|
|
|
|
LL | v4.push(&id('y'));
|
|
| ^^^^^^^ - temporary value is freed at the end of this statement
|
|
| |
|
|
| creates a temporary which is freed while still in use
|
|
...
|
|
LL | v4.use_ref();
|
|
| ------------ borrow later used here
|
|
|
|
|
= note: consider using a `let` binding to create a longer lived value
|
|
|
|
error[E0716]: temporary value dropped while borrowed
|
|
--> $DIR/borrowck-let-suggestion-suffixes.rs:40:14
|
|
|
|
|
LL | v5.push(&id('z'));
|
|
| ^^^^^^^ - temporary value is freed at the end of this statement
|
|
| |
|
|
| creates a temporary which is freed while still in use
|
|
...
|
|
LL | (v1, v2, v3, /* v4 is above. */ v5).use_ref();
|
|
| -- borrow later used here
|
|
|
|
|
help: consider using a `let` binding to create a longer lived value
|
|
|
|
|
LL ~ let binding = id('z');
|
|
LL ~ v5.push(&binding);
|
|
|
|
|
|
|
error: aborting due to 4 previous errors
|
|
|
|
Some errors have detailed explanations: E0597, E0716.
|
|
For more information about an error, try `rustc --explain E0597`.
|