Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 如何在StreamText::filter中使用异步函数_Asynchronous_Rust - Fatal编程技术网

Asynchronous 如何在StreamText::filter中使用异步函数

Asynchronous 如何在StreamText::filter中使用异步函数,asynchronous,rust,Asynchronous,Rust,我有一个值流,我想通过一些谓词对其进行过滤。但是如果谓词本身是一个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); /

我有一个
值流
,我想通过一些谓词对其进行
过滤。但是如果谓词本身是一个
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
}
#[async_std::test]
异步fn测试(){
使用async_std::prelude::*;
使用async_std::stream;
让mut s=stream::from_iter(vec![1u8,2,3,4]);
让mut s=s.filter(|x | check_if_in_db(x).wait);//错误:这不是'async'`
assert_eq!(s.next().wait,Some(1));
assert_eq!(s.next().wait,Some(2));
assert_eq!(s.next().wait,无);
}
异步fn检查\u如果\u在\u db(x:&u8)->bool中{
x可能使用
flat\u map()
a返回
stream::empty()
stream::once()
而不是
false
true
?关于
s.filter(| x |异步{检查\u if_in_db(x).wait})
?我猜是:(运行测试)可能使用
flat\u map()
a返回
stream empty()
stream::once()
而不是
false
true
?那么
s.filter(|x | async{check_if_in_db(x.wait})呢?
我想是:(运行测试)