Struct tokio::sync::mpsc::list::Rx

source ·
pub(crate) struct Rx<T> {
    head: NonNull<Block<T>>,
    index: usize,
    free_head: NonNull<Block<T>>,
}
Expand description

List queue receive handle

Fields§

§head: NonNull<Block<T>>

Pointer to the block being processed.

§index: usize

Next slot index to process.

§free_head: NonNull<Block<T>>

Pointer to the next block pending release.

Implementations§

source§

impl<T> Rx<T>

source

pub(crate) fn is_empty(&self, tx: &Tx<T>) -> bool

source

pub(crate) fn len(&self, tx: &Tx<T>) -> usize

source

pub(crate) fn pop(&mut self, tx: &Tx<T>) -> Option<Read<T>>

Pops the next value off the queue.

source

pub(crate) fn try_pop(&mut self, tx: &Tx<T>) -> TryPopResult<T>

Pops the next value off the queue, detecting whether the block is busy or empty on failure.

This function exists because Rx::pop can return None even if the channel’s queue contains a message that has been completely written. This can happen if the fully delivered message is behind another message that is in the middle of being written to the block, since the channel can’t return the messages out of order.

source

fn try_advancing_head(&mut self) -> bool

Tries advancing the block pointer to the block referenced by self.index.

Returns true if successful, false if there is no next block to load.

source

fn reclaim_blocks(&mut self, tx: &Tx<T>)

source

pub(super) unsafe fn free_blocks(&mut self)

Effectively Drop all the blocks. Should only be called once, when the list is dropping.

Trait Implementations§

source§

impl<T> Debug for Rx<T>

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Rx<T>

§

impl<T> !Send for Rx<T>

§

impl<T> !Sync for Rx<T>

§

impl<T> Unpin for Rx<T>

§

impl<T> !UnwindSafe for Rx<T>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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 Twhere 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 Twhere 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.