pub struct Sender<T> { /* private fields */ }Expand description
Sender half of a channel
Implementations§
Source§impl<T> Sender<T>
impl<T> Sender<T>
Sourcepub async fn send(&self, value: T) -> Result<(), SendError<T>>
pub async fn send(&self, value: T) -> Result<(), SendError<T>>
Send a value through the channel
Examples found in repository?
examples/channel_demo.rs (line 17)
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}Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for Sender<T>
impl<T> RefUnwindSafe for Sender<T>
impl<T> Send for Sender<T>where
T: Send,
impl<T> Sync for Sender<T>where
T: Send,
impl<T> Unpin for Sender<T>
impl<T> UnwindSafe for Sender<T>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)