Closed
Description
struct Struct { }
impl Struct {
async fn async_fn(self: &Struct, f: &u32) -> &u32 {
f
}
fn sync_fn(self: &Struct, f: &u32) -> &u32 {
f
}
}
Output (playground)
Compiling playground v0.0.1 (/playground)
error[E0623]: lifetime mismatch
--> src/main.rs:5:9
|
4 | async fn async_fn(self: &Struct, f: &u32) -> &u32 {
| ------- ----
| |
| this parameter and the return type are declared with different lifetimes...
5 | f
| ^ ...but data from `f` is returned here
error[E0623]: lifetime mismatch
--> src/main.rs:9:9
|
8 | fn sync_fn(self: &Struct, f: &u32) -> &u32 {
| ---- ----
| |
| this parameter and the return type are declared with different lifetimes...
9 | f
| ^ ...but data from `f` is returned here
error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0623`.
error: could not compile `playground`.
To learn more, run the command again with --verbose.
The error in sync_fn
is correct, but the one for async_fn
incorrectly claims the return type lifetime is different from self
's lifetime, when they are in fact the same per the elision rules.
Metadata
Metadata
Assignees
Labels
Area: Async & AwaitArea: Messages for errors, warnings, and lintsAsync-await issues that are part of the "polish" areaAsync-await issues that have been triaged during a working group meeting.Category: This is a bug.Relevant to the compiler team, which will review and decide on the PR/issue.Bugs fixed, but only when NLL is enabled.
Type
Projects
Status
Done