I'm in the following situation:
fn some_fn<K, T, F, S>(func: F, other_func: S) -> Vec<i64>
where
K: SomeType<T>,
T: SomeOtherType,
F: Fn() -> (),
S: Fn() -> (),
{
//...
}
For the above example, Rust can correctly infer types T, F, and S, but not K (as is expected).
Is there a way to only specify the type of K when calling some_fn without also specifying T, F, and S?
My current workaround is to change the signature to some_fn to fn some_fn<K, T, F, S>(cheat: Option<K>, func: F, other_func: S) and call the function like so:
let cheat: Option<SomethingThatImplements> = None;
let result = some_fn(cheat, func, other_func);
However, I find this to be very clunky. I haven't been able to find anything regarding this topic, is it even possible to specify only part of the type args?
Yes. Use _ for the arguments you want to infer:
some_fn::<Foo, _, _, _>(...);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With