pub use std::iter::Iterator as Stream;
use tokio::sync::mpsc::UnboundedReceiver;
pub type BoxStream<'a, T> = Box<dyn Stream<Item = T> + Send + 'a>;
pub fn box_stream<'a, T>(stream: impl Iterator<Item = T> + Send + 'a) -> BoxStream<'a, T> {
Box::new(stream) as BoxStream<'a, T>
}
pub struct NetworkStream<T> {
receiver: UnboundedReceiver<T>,
}
impl<T> NetworkStream<T> {
pub fn new(receiver: UnboundedReceiver<T>) -> Self {
Self { receiver }
}
}
impl<T> Iterator for NetworkStream<T> {
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
self.receiver.blocking_recv()
}
}