use futures::{ stream, stream::{Stream, TryStream}, StreamExt, }; pub trait IterStream { /// Convert an Iterator into a Stream fn stream(self) -> impl Stream::Item> + Send; /// Convert an Iterator into a TryStream fn try_stream(self) -> impl TryStream::Item, Error = crate::Error> + Send; } impl IterStream for I where I: IntoIterator + Send, ::IntoIter: Send, { #[inline] fn stream(self) -> impl Stream::Item> + Send { stream::iter(self) } #[inline] fn try_stream(self) -> impl TryStream::Item, Error = crate::Error> + Send { self.stream().map(Ok) } }