Struct tokio::sync::broadcast::Slot

source ·
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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.