小编Pin*_*ine的帖子

异步 fn 中的 Rust 递归

我想在异步 fn 中使用递归,就像:

async fn test(data: i32) -> i32 {
    if data == 0 {
        0
    } else {
        test(data - 1).await
    }
}
Run Code Online (Sandbox Code Playgroud)

但它说 an 中的递归async fn需要装箱。

所以我把它改成这样:

async fn test(data: i32) -> BoxFuture<'static, i32> {
    async move {
        if data == 0 {
            0
        } else {
            test(data - 1).await.await
        }
    }
    .boxed()
}

Run Code Online (Sandbox Code Playgroud)

但它再次编译错误,并显示消息:计算类型时使用的循环,test::{opaque#0} 我应该做什么来修复它?

recursion asynchronous rust

3
推荐指数
1
解决办法
58
查看次数

标签 统计

asynchronous ×1

recursion ×1

rust ×1