簡體   English   中英

有沒有辦法在 rust 異步中同時輪詢多個期貨

[英]Is there a way to poll several futures simultaniously in rust async

我正在嘗試由迭代器並行執行幾個 sqlx 查詢。 這可能是我迄今為止最接近的。

let mut futures = HahshMap::new() // placeholder, filled HashMap in reality
    .iter()
    .map(async move |(_, item)| -> Result<(), sqlx::Error> {
        let result = sqlx::query_file_as!(
            // omitted
        )
            .fetch_one(&pool)
            .await?;
        channel.send(Enum::Event(result)).ignore();
        Ok(())
    })
    .clollect();
futures::future::join_all(futures);

所有查詢和發送都是相互獨立的,因此如果其中一個失敗,其他的仍應得到處理。 此外,當前的異步關閉是不可能的。

Rust 還沒有async閉包。 相反,您需要讓閉包返回一個異步塊:

move |(_, item)| async move { ... }

此外,請確保您.awaitjoin_all返回的未來,以確保實際輪詢各個任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM