繁体   English   中英

如何指定一个类型参数并让 Rust 推断 rest?

[英]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 可以正确推断类型TFS ,但不能正确推断K (正如预期的那样)。

有没有办法在调用some_fn时只指定K的类型而不指定TFS

我当前的解决方法是将签名更改为some_fnfn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM