use futures::FutureExt;
use futures::Stream;
use futures::StreamExt;
use futures::TryFuture;
use futures::TryFutureExt;
use futures::TryStream;
use futures::TryStreamExt;
impl<T: ?Sized> AstuTryFutureExt for T where T: TryFuture {}
pub trait AstuTryFutureExt: TryFuture {
fn into_stream_infallible<I>(self, inspector: I) -> impl Stream<Item = Self::Ok>
where
Self: Sized,
I: FnOnce(&Self::Error),
{
self.inspect_err(inspector)
.into_stream()
.map(futures::stream::iter)
.flatten()
}
}
impl<T: ?Sized> AstuTryStreamExt for T where T: TryStream {}
pub trait AstuTryStreamExt: TryStream {
fn flatten_err<I>(self, inspector: I) -> impl Stream<Item = Self::Ok>
where
Self: Sized,
I: FnMut(&Self::Error),
{
self.inspect_err(inspector)
.map(futures::stream::iter)
.flatten()
}
}