E0623 highlights wrong parameter in async fn · Issue #74256 · rust-lang/rust (original) (raw)
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.