b7a23bc08b
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`.
|