У меня есть поток, который генерирует результат, я хочу применить try_filter_map () к этим элементам и взять первый элемент, который не приводит к ошибке.
Рассмотрим следующий пример: (площадка)
use futures::{pin_mut, prelude::*};
use tokio;
#[tokio::main]
async fn main() {
let s = stream::iter(vec![Ok(1), Ok(2), Ok(3)])
.try_filter_map(|v| async move { if v == 1 { Err("Ohno!") } else { Ok(Some(v)) } })
.inspect_err(|err| println!("Error {:?}", err))
.filter_map(|r| future::ready(r.ok()));
pin_mut!(s);
let result = s.next().await;
println!("{:?}", result);
}
Когда я запускаю этот код, я получаю следующую ошибку:
Error "Ohno!"
thread 'main' panicked at '`async fn` resumed after completion'
Я новичок в Rust и мог бы помочь решить эту проблему.