[英]How do I specify one type argument and let Rust infer the rest?
我处于以下情况:
fn some_fn<K, T, F, S>(func: F, other_func: S) -> Vec<i64>
where
K: SomeType<T>,
T: SomeOtherType,
F: Fn() -> (),
S: Fn() -> (),
{
//...
}
对于上面的示例,Rust 可以正确推断类型T
、 F
和S
,但不能正确推断K
(正如预期的那样)。
有没有办法在调用some_fn
时只指定K
的类型而不指定T
、 F
和S
?
我当前的解决方法是将签名更改为some_fn
为fn some_fn<K, T, F, S>(cheat: Option<K>, func: F, other_func: S)
并像这样调用 function :
let cheat: Option<SomethingThatImplements> = None;
let result = some_fn(cheat, func, other_func);
但是,我发现这非常笨拙。 我无法找到有关此主题的任何内容,甚至可以仅指定类型 args 的一部分吗?
是的。 使用_
表示您要推断的 arguments:
some_fn::<Foo, _, _, _>(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.