pub struct Receiver<T> { /* private fields */ }Expand description
Receiver half of a channel
Implementations§
Source§impl<T> Receiver<T>
impl<T> Receiver<T>
Sourcepub async fn recv(&self) -> Option<T>
pub async fn recv(&self) -> Option<T>
Receive a value from the channel
Examples found in repository?
examples/channel_demo.rs (line 37)
4fn main() {
5 let rt = Runtime::new();
6
7 rt.block_on(async move {
8 let (tx, rx) = channel::bounded::<String>(10);
9
10 // Spawn producer task
11 rt.spawn({
12 let tx = tx.clone();
13 async move {
14 for i in 0..5 {
15 let msg = format!("Message {}", i);
16 println!("Sending: {}", msg);
17 tx.send(msg).await.unwrap();
18 avx_async::sleep(Duration::from_millis(500)).await;
19 }
20 }
21 });
22
23 // Spawn another producer
24 rt.spawn({
25 async move {
26 for i in 0..5 {
27 let msg = format!("Urgent {}", i);
28 println!("Sending: {}", msg);
29 tx.send(msg).await.unwrap();
30 avx_async::sleep(Duration::from_millis(300)).await;
31 }
32 }
33 });
34
35 // Receive messages
36 let mut count = 0;
37 while let Some(msg) = rx.recv().await {
38 println!("Received: {}", msg);
39 count += 1;
40 if count >= 10 {
41 break;
42 }
43 }
44
45 println!("All messages received!");
46 });
47}