此代码编译:
async fn foo(_: impl Iterator<Item = &u32>) {}
Run Code Online (Sandbox Code Playgroud)
但是,删除async,它不再起作用:
fn foo(_: impl Iterator<Item = &u32>) {}
Run Code Online (Sandbox Code Playgroud)
相反,它导致:
error[E0106]: missing lifetime specifier
--> src/lib.rs:1:32
|
1 | fn foo(_: impl Iterator<Item = &u32>) {}
| ^ expected named lifetime parameter
|
help: consider introducing a named lifetime parameter
|
1 | fn foo<'a>(_: impl Iterator<Item = &'a u32>) {}
| ^^^^ ^^^
Run Code Online (Sandbox Code Playgroud)
(游乐场)
为什么功能async和非async功能之间的生命周期省略存在差异?这对我来说毫无意义。似乎非asynccase 也很容易忽略生命周期。它只是引入了另一个匿名输入生命周期。