diff options
| author | huntc <[email protected]> | 2021-07-06 23:51:47 +1000 |
|---|---|---|
| committer | huntc <[email protected]> | 2021-07-15 12:31:52 +1000 |
| commit | a156f72bfba854087afd17f4769060577417698a (patch) | |
| tree | 8892cfc24048d5d9cf02cc445ea8c677c826eaca | |
| parent | 816b78c0d9733362d8653eb2032f126e6a710030 (diff) | |
Improves the representation of side effects
| -rw-r--r-- | embassy/src/util/mpsc.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/embassy/src/util/mpsc.rs b/embassy/src/util/mpsc.rs index d8a010d7d..f09bcedbc 100644 --- a/embassy/src/util/mpsc.rs +++ b/embassy/src/util/mpsc.rs | |||
| @@ -492,7 +492,9 @@ where | |||
| 492 | if state.read_pos != state.write_pos || state.full { | 492 | if state.read_pos != state.write_pos || state.full { |
| 493 | if state.full { | 493 | if state.full { |
| 494 | state.full = false; | 494 | state.full = false; |
| 495 | state.senders_waker.take().map(|w| w.wake()); | 495 | if let Some(w) = state.senders_waker.take() { |
| 496 | w.wake(); | ||
| 497 | } | ||
| 496 | } | 498 | } |
| 497 | let message = | 499 | let message = |
| 498 | unsafe { (state.buf[state.read_pos]).assume_init_mut().get().read() }; | 500 | unsafe { (state.buf[state.read_pos]).assume_init_mut().get().read() }; |
| @@ -502,7 +504,9 @@ where | |||
| 502 | Err(TryRecvError::Empty) | 504 | Err(TryRecvError::Empty) |
| 503 | } else { | 505 | } else { |
| 504 | state.closed = true; | 506 | state.closed = true; |
| 505 | state.senders_waker.take().map(|w| w.wake()); | 507 | if let Some(w) = state.senders_waker.take() { |
| 508 | w.wake(); | ||
| 509 | } | ||
| 506 | Err(TryRecvError::Closed) | 510 | Err(TryRecvError::Closed) |
| 507 | } | 511 | } |
| 508 | } else { | 512 | } else { |
| @@ -521,7 +525,9 @@ where | |||
| 521 | if state.write_pos == state.read_pos { | 525 | if state.write_pos == state.read_pos { |
| 522 | state.full = true; | 526 | state.full = true; |
| 523 | } | 527 | } |
| 524 | state.receiver_waker.take().map(|w| w.wake()); | 528 | if let Some(w) = state.receiver_waker.take() { |
| 529 | w.wake(); | ||
| 530 | } | ||
| 525 | Ok(()) | 531 | Ok(()) |
| 526 | } else { | 532 | } else { |
| 527 | Err(TrySendError::Full(message)) | 533 | Err(TrySendError::Full(message)) |
| @@ -535,7 +541,9 @@ where | |||
| 535 | fn close(&mut self) { | 541 | fn close(&mut self) { |
| 536 | let state = &mut self.state; | 542 | let state = &mut self.state; |
| 537 | self.mutex.lock(|_| { | 543 | self.mutex.lock(|_| { |
| 538 | state.receiver_waker.take().map(|w| w.wake()); | 544 | if let Some(w) = state.receiver_waker.take() { |
| 545 | w.wake(); | ||
| 546 | } | ||
| 539 | state.closing = true; | 547 | state.closing = true; |
| 540 | }); | 548 | }); |
| 541 | } | 549 | } |
| @@ -558,7 +566,9 @@ where | |||
| 558 | self.mutex.lock(|_| { | 566 | self.mutex.lock(|_| { |
| 559 | if state.receiver_registered { | 567 | if state.receiver_registered { |
| 560 | state.closed = true; | 568 | state.closed = true; |
| 561 | state.senders_waker.take().map(|w| w.wake()); | 569 | if let Some(w) = state.senders_waker.take() { |
| 570 | w.wake(); | ||
| 571 | } | ||
| 562 | } | 572 | } |
| 563 | state.receiver_registered = false; | 573 | state.receiver_registered = false; |
| 564 | }) | 574 | }) |
| @@ -577,7 +587,9 @@ where | |||
| 577 | assert!(state.senders_registered > 0); | 587 | assert!(state.senders_registered > 0); |
| 578 | state.senders_registered = state.senders_registered - 1; | 588 | state.senders_registered = state.senders_registered - 1; |
| 579 | if state.senders_registered == 0 { | 589 | if state.senders_registered == 0 { |
| 580 | state.receiver_waker.take().map(|w| w.wake()); | 590 | if let Some(w) = state.receiver_waker.take() { |
| 591 | w.wake(); | ||
| 592 | } | ||
| 581 | state.closing = true; | 593 | state.closing = true; |
| 582 | } | 594 | } |
| 583 | }) | 595 | }) |
