@@ -689,39 +689,28 @@ impl<T> SyncSender<T> {
689
689
/// # Examples
690
690
///
691
691
/// ```rust
692
- /// use std::sync::mpsc::sync_channel;
693
- /// use std::thread;
692
+ /// use std::sync::mpsc::{sync_channel, TrySendError};
694
693
///
695
694
/// // Create a sync_channel with buffer size 1
696
- /// let (sync_sender, receiver) = sync_channel(1);
697
- /// let sync_sender2 = sync_sender.clone();
695
+ /// let (sender, receiver) = sync_channel(1);
698
696
///
699
- /// // First thread owns sync_sender
700
- /// thread::spawn(move || {
701
- /// sync_sender.send(1).unwrap();
702
- /// sync_sender.send(2).unwrap();
703
- /// // Thread blocked
704
- /// });
697
+ /// // First send succeeds immediately
698
+ /// assert!(sender.try_send(1).is_ok());
705
699
///
706
- /// // Second thread owns sync_sender2
707
- /// thread::spawn(move || {
708
- /// // This will return an error and send
709
- /// // no message if the buffer is full
710
- /// let _ = sync_sender2.try_send(3);
711
- /// });
712
- ///
713
- /// let mut msg;
714
- /// msg = receiver.recv().unwrap();
715
- /// println!("message {msg} received");
700
+ /// // Second send fails because buffer is full
701
+ /// match sender.try_send(2) {
702
+ /// Err(TrySendError::Full(2)) => {
703
+ /// println!("Channel buffer is full, couldn't send 2");
704
+ /// }
705
+ /// _ => unreachable!(),
706
+ /// }
716
707
///
717
- /// msg = receiver.recv().unwrap();
718
- /// println!("message {msg} received");
708
+ /// // After receiving, buffer has space again
709
+ /// let received = receiver.recv().unwrap();
710
+ /// assert_eq!(received, 1);
719
711
///
720
- /// // Third message may have never been sent
721
- /// match receiver.try_recv() {
722
- /// Ok(msg) => println!("message {msg} received"),
723
- /// Err(_) => println!("the third message was never sent"),
724
- /// }
712
+ /// // Now try_send succeeds again
713
+ /// assert!(sender.try_send(3).is_ok());
725
714
/// ```
726
715
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
727
716
pub fn try_send ( & self , t : T ) -> Result < ( ) , TrySendError < T > > {
0 commit comments