我有一个async
函数列表,我想要并发执行它们,然后等待它们全部完成。目前我拥有的可工作代码是:
async fn start_consumers(&self) {
for consumer in &self.consumers {
consumer.consume().await;
}
}
这并不完全准确,因为函数是串行执行的。我正在寻找像join!
这样的东西,但它适用于动态向量。有了它,我应该能够编写类似以下的内容:
async fn start_consumers(&self) {
let mut v = Vec::new();
for consumer in &self.consumers {
consumer.consume();
}
join!(v);
}
目前join!
只支持元组。我正在寻找替代方法。类似于JavaScript中的Promise.all()
的东西。