struct Slot<T> {
rem: AtomicUsize,
pos: u64,
val: UnsafeCell<Option<T>>,
}
Expand description
Slot in the buffer.
Fields§
§rem: AtomicUsize
Remaining number of receivers that are expected to see this value.
When this goes to zero, the value is released.
An atomic is used as it is mutated concurrently with the slot read lock acquired.
pos: u64
Uniquely identifies the send
stored in the slot.
val: UnsafeCell<Option<T>>
The value being broadcast.
The value is set by send
when the write lock is held. When a reader
drops, rem
is decremented. When it hits zero, the value is dropped.
Auto Trait Implementations§
impl<T> !Freeze for Slot<T>
impl<T> !RefUnwindSafe for Slot<T>
impl<T> Send for Slot<T>where
T: Send,
impl<T> !Sync for Slot<T>
impl<T> Unpin for Slot<T>where
T: Unpin,
impl<T> UnwindSafe for Slot<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more