Skip to main content

Consumer

Struct Consumer 

Source
pub struct Consumer<T> { /* private fields */ }
Expand description

Receiving half. Send but not Sync.

Implementations§

Source§

impl<T> Consumer<T>

Source

pub fn ring_addr(&self) -> usize

Source§

impl<T> Consumer<T>

Source

pub fn pop(&mut self) -> Option<T>

Pop one item. Zero atomics; reads from the prefetched window. Returns None when the prefetched window is exhausted. Call prefetch to load newly flushed items and release to publish consumed slots back to the producer.

Source

pub fn release(&mut self)

Publish consumed position so the producer can reuse slots. One Release store. Call after draining a batch of pops.

Source

pub fn prefetch(&mut self) -> usize

Load all items flushed since the last prefetch. One Acquire load. Returns the count of newly available items.

Source

pub fn prefetch_and_pop(&mut self) -> Option<T>

Convenience: prefetch + pop + release. For callers that don’t need batching.

Source

pub fn is_empty(&self) -> bool

Source

pub fn is_disconnected(&self) -> bool

The producer has been dropped and all flushed items have been consumed. No more data will ever arrive.

Source

pub fn capacity(&self) -> usize

Source

pub fn len(&self) -> usize

Trait Implementations§

Source§

impl<T> Debug for Consumer<T>

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<T> Drop for Consumer<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl<T: Send> Send for Consumer<T>

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Consumer<T>

§

impl<T> !UnwindSafe for Consumer<T>

§

impl<T> Freeze for Consumer<T>

§

impl<T> Sync for Consumer<T>
where T: Send,

§

impl<T> Unpin for Consumer<T>

§

impl<T> UnsafeUnpin for Consumer<T>

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>,

Source§

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>,

Source§

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.