main.rs (786B)
1 //! https://rust-lang.github.io/book/ch17-04-streams.html 2 3 use std::{pin::pin, time::Duration}; 4 5 use trpl::{ReceiverStream, Stream, StreamExt}; 6 7 fn get_messages() -> impl Stream<Item = String> { 8 let (tx, rx) = trpl::channel(); 9 10 let messages = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]; 11 for message in messages { 12 tx.send(format!("Message: '{message}'")).unwrap(); 13 } 14 15 ReceiverStream::new(rx) 16 } 17 18 fn main() { 19 trpl::run(async { 20 let mut messages = pin!(get_messages().timeout(Duration::from_millis(200))); 21 22 while let Some(result) = messages.next().await { 23 match result { 24 Ok(message) => println!("{message}"), 25 Err(reason) => eprintln!("Problem: {reason:?}"), 26 } 27 } 28 }) 29 }