diff options
| -rw-r--r-- | embassy/src/util/mpsc.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/embassy/src/util/mpsc.rs b/embassy/src/util/mpsc.rs index f09bcedbc..5f2dd729a 100644 --- a/embassy/src/util/mpsc.rs +++ b/embassy/src/util/mpsc.rs | |||
| @@ -98,9 +98,7 @@ unsafe impl<'ch, T> Sync for Receiver<'ch, T> {} | |||
| 98 | /// mpsc::split(&channel) | 98 | /// mpsc::split(&channel) |
| 99 | /// }; | 99 | /// }; |
| 100 | /// ``` | 100 | /// ``` |
| 101 | pub fn split<'ch, T>( | 101 | pub fn split<T>(channel: &UnsafeCell<dyn ChannelLike<T>>) -> (Sender<T>, Receiver<T>) { |
| 102 | channel: &'ch UnsafeCell<dyn ChannelLike<T>>, | ||
| 103 | ) -> (Sender<'ch, T>, Receiver<'ch, T>) { | ||
| 104 | let sender = Sender { channel: &channel }; | 102 | let sender = Sender { channel: &channel }; |
| 105 | let receiver = Receiver { channel: &channel }; | 103 | let receiver = Receiver { channel: &channel }; |
| 106 | { | 104 | { |
| @@ -296,6 +294,7 @@ impl<'ch, T> Drop for Sender<'ch, T> { | |||
| 296 | } | 294 | } |
| 297 | 295 | ||
| 298 | impl<'ch, T> Clone for Sender<'ch, T> { | 296 | impl<'ch, T> Clone for Sender<'ch, T> { |
| 297 | #[allow(clippy::clone_double_ref)] | ||
| 299 | fn clone(&self) -> Self { | 298 | fn clone(&self) -> Self { |
| 300 | unsafe { &mut *self.channel.get() }.register_sender(); | 299 | unsafe { &mut *self.channel.get() }.register_sender(); |
| 301 | Sender { | 300 | Sender { |
| @@ -577,7 +576,7 @@ where | |||
| 577 | fn register_sender(&mut self) { | 576 | fn register_sender(&mut self) { |
| 578 | let state = &mut self.state; | 577 | let state = &mut self.state; |
| 579 | self.mutex.lock(|_| { | 578 | self.mutex.lock(|_| { |
| 580 | state.senders_registered = state.senders_registered + 1; | 579 | state.senders_registered += 1; |
| 581 | }) | 580 | }) |
| 582 | } | 581 | } |
| 583 | 582 | ||
| @@ -585,7 +584,7 @@ where | |||
| 585 | let state = &mut self.state; | 584 | let state = &mut self.state; |
| 586 | self.mutex.lock(|_| { | 585 | self.mutex.lock(|_| { |
| 587 | assert!(state.senders_registered > 0); | 586 | assert!(state.senders_registered > 0); |
| 588 | state.senders_registered = state.senders_registered - 1; | 587 | state.senders_registered -= 1; |
| 589 | if state.senders_registered == 0 { | 588 | if state.senders_registered == 0 { |
| 590 | if let Some(w) = state.receiver_waker.take() { | 589 | if let Some(w) = state.receiver_waker.take() { |
| 591 | w.wake(); | 590 | w.wake(); |
