mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2025-08-01 04:38:31 +00:00
28 lines
726 B
Rust
28 lines
726 B
Rust
|
use futures::{
|
||
|
stream,
|
||
|
stream::{Stream, TryStream},
|
||
|
StreamExt,
|
||
|
};
|
||
|
|
||
|
pub trait IterStream<I: IntoIterator + Send> {
|
||
|
/// Convert an Iterator into a Stream
|
||
|
fn stream(self) -> impl Stream<Item = <I as IntoIterator>::Item> + Send;
|
||
|
|
||
|
/// Convert an Iterator into a TryStream
|
||
|
fn try_stream(self) -> impl TryStream<Ok = <I as IntoIterator>::Item, Error = crate::Error> + Send;
|
||
|
}
|
||
|
|
||
|
impl<I> IterStream<I> for I
|
||
|
where
|
||
|
I: IntoIterator + Send,
|
||
|
<I as IntoIterator>::IntoIter: Send,
|
||
|
{
|
||
|
#[inline]
|
||
|
fn stream(self) -> impl Stream<Item = <I as IntoIterator>::Item> + Send { stream::iter(self) }
|
||
|
|
||
|
#[inline]
|
||
|
fn try_stream(self) -> impl TryStream<Ok = <I as IntoIterator>::Item, Error = crate::Error> + Send {
|
||
|
self.stream().map(Ok)
|
||
|
}
|
||
|
}
|