为什么异步和非异步函数之间的impltrait函数参数的生命周期省略存在差异?

此代码编译:

async fn foo(_: impl Iterator<Item = &u32>) {}

但是,删除async,它不再起作用:

fn foo(_: impl Iterator<Item = &u32>) {}

相反,它导致:

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>) {}
  |       ^^^^                         ^^^

(游乐场)

为什么功能async和非async功能之间的生命周期省略存在差异?这对我来说毫无意义。似乎非asynccase 也很容易忽略生命周期。它只是引入了另一个匿名输入生命周期。

以上是为什么异步和非异步函数之间的impltrait函数参数的生命周期省略存在差异?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>