use futures::{ stream, stream::{Stream, TryStream}, StreamExt, }; use crate::{Error, Result}; 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< Ok = ::Item, Error = Error, Item = Result<::Item, 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< Ok = ::Item, Error = Error, Item = Result<::Item, Error>, > + Send { self.stream().map(Ok) } }