Asynchronous 有没有一种方法可以在rust async中同时轮询多个期货

Asynchronous 有没有一种方法可以在rust async中同时轮询多个期货,asynchronous,rust,parallel-processing,Asynchronous,Rust,Parallel Processing,我试图并行执行迭代器给出的几个sqlx查询。 这可能是我迄今为止最接近的一次 let mut futures=HahshMap::new()//占位符,实际填充的HashMap .国际热核实验堆(iter) .map(异步移动|(|,项)|->结果{ 让result=sqlx::query\u file\u as( //省略 ) .fetch_one(&pool) .等待?; send(Enum::Event(result)).ignore(); 好(()) }) .clollect(); 期货

我试图并行执行迭代器给出的几个sqlx查询。 这可能是我迄今为止最接近的一次

let mut futures=HahshMap::new()//占位符,实际填充的HashMap
.国际热核实验堆(iter)
.map(异步移动|(|,项)|->结果{
让result=sqlx::query\u file\u as(
//省略
)
.fetch_one(&pool)
.等待?;
send(Enum::Event(result)).ignore();
好(())
})
.clollect();
期货:期货:加入所有(期货);
所有查询和发送都是相互独立的,因此,如果其中一个查询和发送失败,其他查询和发送仍应得到处理。
此外,当前的异步关闭不可能像这样。

Rust还没有
async
关闭。相反,您需要让闭包返回一个异步块:

move |(|,item)|异步移动{…}

此外,请确保您
。等待
加入所有
返回的未来,以确保实际轮询各个任务。

如果您想在任何任务完成后执行某项操作,请使用
加入所有()
。@HHK该映射不是这样工作的。此外,我希望所有的未来都能解决。只是一些细微的变化:收集既不起作用,也没有必要。池或通道之类的东西需要克隆到异步块之外,因为它会抱怨
无法移出“channel”,这是“FnMut”闭包中捕获的变量。