Skip to main content

MailboxReceiver

Struct MailboxReceiver 

Source
pub struct MailboxReceiver { /* private fields */ }
Expand description

The receiver half of a mailbox. Unique — only one consumer.

Implementations§

Source§

impl MailboxReceiver

Source

pub fn try_recv(&mut self) -> Option<Arc<Message>>

Tries to receive a single message without blocking.

Returns Some(msg) if available, None if the queue is empty.

Source

pub async fn recv(&mut self) -> Option<Arc<Message>>

Receives a single message, awaiting if the queue is empty.

Returns Some(msg) if received, None if the mailbox was closed. Convenience method for tests and non-batch consumers.

Source

pub fn try_recv_batch( &mut self, buf: &mut Vec<Arc<Message>>, max: usize, ) -> usize

Drains up to max messages into buf without blocking.

Returns the number of messages drained. Zero if empty. The messages are appended to buf in FIFO order.

Source

pub async fn recv_batch( &mut self, buf: &mut Vec<Arc<Message>>, max: usize, ) -> usize

Receives a batch of messages, awaiting if the queue is empty.

First tries a non-blocking drain. If empty, waits for Notify (cancel-safe), then drains again. Returns the number of messages received (0 means the mailbox was closed).

§Cancel Safety

This method is cancel-safe. The Notify::notified() future can be dropped at any time without losing notifications.

Source

pub fn close(&self)

Marks the mailbox as closed, waking any consumer waiting on recv_batch.

Trait Implementations§

Source§

impl Drop for MailboxReceiver

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

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V