mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-28 03:24:11 +00:00
When we encounter a function with a return type that has an anonymous
lifetime with no argument to borrow from, besides suggesting the
`'static` lifetime we now also suggest changing the arguments to be
borrows or changing the return type to be an owned type.
```
error[E0106]: missing lifetime specifier
--> $DIR/variadic-ffi-6.rs:7:6
|
LL | ) -> &usize {
| ^ expected named lifetime parameter
|
= help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
|
LL | ) -> &'static usize {
| +++++++
help: instead, you are more likely to want to change one of the arguments to be borrowed...
|
LL | x: &usize,
| +
help: ...or alternatively, to want to return an owned value
|
LL - ) -> &usize {
LL + ) -> usize {
|
```
Fix #85843.
52 lines
1.9 KiB
Plaintext
52 lines
1.9 KiB
Plaintext
error[E0106]: missing lifetime specifier
|
|
--> $DIR/underscore-lifetime-binders.rs:2:17
|
|
|
|
|
LL | struct Baz<'a>(&'_ &'a u8);
|
|
| ^^ expected named lifetime parameter
|
|
|
|
|
help: consider using the `'a` lifetime
|
|
|
|
|
LL | struct Baz<'a>(&'a &'a u8);
|
|
| ~~
|
|
|
|
error[E0637]: `'_` cannot be used here
|
|
--> $DIR/underscore-lifetime-binders.rs:4:8
|
|
|
|
|
LL | fn foo<'_>
|
|
| ^^ `'_` is a reserved lifetime name
|
|
|
|
error[E0637]: `'_` cannot be used here
|
|
--> $DIR/underscore-lifetime-binders.rs:10:25
|
|
|
|
|
LL | fn meh() -> Box<dyn for<'_> Meh<'_>>
|
|
| ^^ `'_` is a reserved lifetime name
|
|
|
|
error[E0106]: missing lifetime specifier
|
|
--> $DIR/underscore-lifetime-binders.rs:10:33
|
|
|
|
|
LL | fn meh() -> Box<dyn for<'_> Meh<'_>>
|
|
| ^^ expected named lifetime parameter
|
|
|
|
|
= help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
|
|
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
|
|
|
|
|
LL | fn meh() -> Box<dyn for<'_> Meh<'static>>
|
|
| ~~~~~~~
|
|
|
|
error[E0106]: missing lifetime specifier
|
|
--> $DIR/underscore-lifetime-binders.rs:16:35
|
|
|
|
|
LL | fn foo2(_: &'_ u8, y: &'_ u8) -> &'_ u8 { y }
|
|
| ------ ------ ^^ expected named lifetime parameter
|
|
|
|
|
= help: this function's return type contains a borrowed value, but the signature does not say whether it is borrowed from argument 1 or `y`
|
|
help: consider introducing a named lifetime parameter
|
|
|
|
|
LL | fn foo2<'a>(_: &'a u8, y: &'a u8) -> &'a u8 { y }
|
|
| ++++ ~~ ~~ ~~
|
|
|
|
error: aborting due to 5 previous errors
|
|
|
|
Some errors have detailed explanations: E0106, E0637.
|
|
For more information about an error, try `rustc --explain E0106`.
|