use crate::cbor::CborBytes; use futures_util::future; use futures_util::Stream; use futures_util::StreamExt; pub fn non_empty(inp: S) -> impl Stream> where S: Stream>, { inp.filter(|x| { future::ready(match x { Ok(x) => x.len() > 0, Err(_) => true, }) }) } pub fn only_first_err(inp: S) -> impl Stream> where S: Stream>, { inp.take_while({ let mut state = true; move |x| { let ret = state; if x.is_err() { state = false; } future::ready(ret) } }) }