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})呢?
我想是:(运行测试)