小编Pet*_*ter的帖子

如何从返回异步的闭包 Vec 中加入_all?

我想要生成Vec.awaitS和与执行它们join_all

use futures::future::join_all; // 0.3.5
use std::future::Future;

async fn hello(name: &str) -> String {
    format!("Hello {}!", name)
}

async fn main() {
    let urls = vec!["Peter", "Hans", "Jake"];
    let mut requests: Vec<Box<dyn Fn() -> Box<dyn Future<Output = String>>>> = vec![];
    for url in urls {
        requests.push(Box::new(|| Box::new(hello(&url))));
    }
    let responses: Vec<String> = join_all(requests).await;

    println!("Response: {:?}", responses);
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

error[E0277]: `dyn std::ops::Fn() -> std::boxed::Box<dyn futures::Future<Output = std::string::String>>` cannot be unpinned
  --> src/main.rs:15:45
   |
15 | …
Run Code Online (Sandbox Code Playgroud)

rust async-await

5
推荐指数
1
解决办法
939
查看次数

标签 统计

async-await ×1

rust ×1