簡體   English   中英

Rust:異步查找(在謂詞中使用 await)

[英]Rust: Async find (use await within predicate)

我正在嘗試在查找謂詞中使用異步。 我們可以使用 find 方法在迭代器中查找元素,如下所示:

let element = some_elements.iter().find(|element| {
  // some_async_method(element).await;
  // true or false based on some logic
});

就我而言,我需要調用異步方法作為查找邏輯的一部分。 但是,當我使用 await 時,我最終遇到無法在非異步塊中調用 await 的錯誤,這是預期的。 當我嘗試按如下方式使我的函數異步時:

let element = some_elements.iter().find(|element| async move{
  // some_async_method(element).await;
  // true or false based on some logic
});

我收到錯誤:預期bool ,發現不透明類型

我嘗試使用人造絲,但找不到我正在尋找的示例。

您可以使用futures::stream::iter將迭代器變成Stream

由於find沒有在StreamExt上實現,我在下面用filter().next()替換了它:

use futures::stream::StreamExt;
//…
let element = futures::stream::iter(&some_elements)
    .filter(|e| Box::pin(async move { predicate(e).await }))
    .next()
    .await;

暫無
暫無

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

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