exercises

Log | Files | Refs | README

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 }