This commit is contained in:
Dion Dokter 2022-06-16 12:36:39 +02:00
parent 12a6ddfbcd
commit 03996583a1

View File

@ -25,7 +25,9 @@ pub struct PubSubChannel<M: RawMutex, T: Clone, const CAP: usize, const SUBS: us
inner: Mutex<M, RefCell<PubSubState<T, CAP, SUBS, PUBS>>>, inner: Mutex<M, RefCell<PubSubState<T, CAP, SUBS, PUBS>>>,
} }
impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usize> PubSubChannel<M, T, CAP, SUBS, PUBS> { impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usize>
PubSubChannel<M, T, CAP, SUBS, PUBS>
{
/// Create a new channel /// Create a new channel
pub const fn new() -> Self { pub const fn new() -> Self {
Self { Self {
@ -134,7 +136,7 @@ impl<M: RawMutex, T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usi
// We are going to call something is Self again. // We are going to call something is Self again.
// The lock is fine, but we need to get rid of the refcell borrow // The lock is fine, but we need to get rid of the refcell borrow
drop(s); drop(s);
// This will succeed because we made sure there is space // This will succeed because we made sure there is space
unsafe { self.try_publish(message).unwrap_unchecked() }; unsafe { self.try_publish(message).unwrap_unchecked() };
}); });
@ -354,7 +356,6 @@ impl<'a, T: Clone> ImmediatePublisher<'a, T> {
pub fn try_publish(&self, message: T) -> Result<(), T> { pub fn try_publish(&self, message: T) -> Result<(), T> {
self.channel.try_publish(message) self.channel.try_publish(message)
} }
} }
/// Error type for the [PubSubChannel] /// Error type for the [PubSubChannel]
@ -480,8 +481,8 @@ pub enum WaitResult<T> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::blocking_mutex::raw::NoopRawMutex;
use super::*; use super::*;
use crate::blocking_mutex::raw::NoopRawMutex;
#[futures_test::test] #[futures_test::test]
async fn all_subscribers_receive() { async fn all_subscribers_receive() {
@ -586,5 +587,4 @@ mod tests {
drop(sub0); drop(sub0);
} }
} }