返回异步闭包的函数的返回类型?

时间:2021-02-24 14:03:10

标签: rust

来自 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,这似乎让它变得更加困难。有人可以就如何制定正确的结果类型提供建议吗?

0 个答案:

没有答案