我有这样的东西:
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
特征绑定的具体类型。
链接到操场