我想在异步 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}
我应该做什么来修复它?