Type Alias unicycle::StreamsUnordered
source · pub type StreamsUnordered<T> = Unordered<T, Streams>;
Available on crate feature
futures-rs
only.Expand description
A container for an unordered collection of Streams.
§Examples
use tokio::{net::TcpListener, time};
use tokio_util::codec::{Framed, LengthDelimitedCodec};
use std::error::Error;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let mut listener = TcpListener::bind("127.0.0.1:8080").await?;
let mut clients = unicycle::StreamsUnordered::new();
loop {
tokio::select! {
result = listener.accept() => {
let (stream, _) = result?;
clients.push(Framed::new(stream, LengthDelimitedCodec::new()));
},
Some(frame) = clients.next() => {
println!("received frame: {:?}", frame);
}
}
}
}
Aliased Type§
struct StreamsUnordered<T> { /* private fields */ }
Implementations§
source§impl<T> StreamsUnordered<T>
impl<T> StreamsUnordered<T>
sourcepub fn new() -> Self
pub fn new() -> Self
Construct a new, empty StreamsUnordered.
§Examples
use tokio_stream::iter;
use unicycle::StreamsUnordered;
#[tokio::main]
async fn main() {
let mut streams = StreamsUnordered::new();
assert!(streams.is_empty());
streams.push(iter(vec![1, 2, 3, 4]));
streams.push(iter(vec![5, 6, 7, 8]));
let mut received = Vec::new();
while let Some(value) = streams.next().await {
received.push(value);
}
assert_eq!(vec![5, 1, 6, 2, 7, 3, 8, 4], received);
}
Trait Implementations§
source§impl<T> FromIterator<T> for StreamsUnordered<T>where
T: Stream,
impl<T> FromIterator<T> for StreamsUnordered<T>where
T: Stream,
source§fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self
Creates a value from an iterator. Read more