将None传递给Option<时无法推断类型;impl FnMut()>

  • 本文关键字:类型 impl FnMut None Option rust
  • 更新时间 :
  • 英文 :


我有这样的东西:

fn my_func(cb: Option<impl FnMut(i32) + 'static>) { ... }

如果我尝试传入None,例如:my_func(None),我会得到:

cannot infer type for type parameter `impl FnMut(i32) + 'static` declared on the method `my_func`

我发现之前的一篇文章说,我仍然需要使用实现T的东西通过None::<T>指定一个类型,这是有道理的,但在这种情况下我该怎么做呢?我尝试定义一个与签名匹配的空函数,但没有成功。Rust抱怨我没有传递任何"类型",而且我传递了太多"常量"。

您可能试图传入一个实际的函数,而不是函数的类型。您可以使用None::<fn(i32)>,因为fn(i32)是实现FnMut(i32) + 'static特征绑定的具体类型。

链接到操场

最新更新