Use the Stream trait with StreamExt to process a sequence of asynchronous items one by one without blocking the runtime. Import StreamExt to access the next method, then loop over the stream using while let and await to handle each item as it arrives.
use trpl::StreamExt;
#[trpl::main]
async fn main() {
let stream = trpl::stream_from_iter(vec![1, 2, 3].into_iter());
let mut stream = stream;
while let Some(value) = stream.next().await {
println!("Received: {}", value);
}
}