来自 Scala,我习惯于部分应用函数。 我有以下异步函数,我想通过构建闭包为其预填充一个参数:
pub async fn my_func(
arg1: SomeType,
arg2: SomeOtherType,
secret: String
) -> Result<SomeResultType, Error> {...}
let partially_applied_func = |arg1: SomeType, arg2: SomeOtherType|
{
my_func(arg1, arg2, get_my_secret_code().clone())
};
...这样我就可以传递partially_applied_func
。
此语法工作正常,但 get_my_secret_code()
是我想在我的库中进一步抽象的代码。我想基本上公开一个产生 partially_applied_func
闭包的公共函数:
pub (async?) fn make_closure() -> ??? {
|arg1: SomeType, arg2: SomeOtherType|
{
my_func(arg1, arg2, get_my_secret_code().clone())
}
}
我终生无法弄清楚 make_closure
的结果类型。我的 IDE 建议了一些与 fn(_, _) -> Future<Output = Result<SomeResultType>, Error>
类似的内容,但这是不正确的。
要求返回的闭包是async
,这似乎让它变得更加困难。有人可以就如何制定正确的结果类型提供建议吗?