Как использовать функции asyn c в StreamExt :: filter - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть Stream значений, и я хочу filter по некоторому предикату. Но что, если сам предикат является async функцией?

#[async_std::test]
async fn test() {
    use async_std::prelude::*;
    use async_std::stream;

    let mut s = stream::from_iter(vec![1u8, 2, 3, 4]);

    let mut s = s.filter(|x| check_if_in_db(x).await); // error: this is not `async`

    assert_eq!(s.next().await, Some(1));
    assert_eq!(s.next().await, Some(2));
    assert_eq!(s.next().await, None);
}

async fn check_if_in_db(x: &u8) -> bool {
    x <= &2
}

Я борюсь с тем, чтобы предикат filter возвращал bool одновременно с async.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...