Struct safina_executor::Receiver
source · [−]pub struct Receiver<T> where
T: Send, { /* private fields */ }
Expand description
The receiving half of a channel. This half can only be owned by one thread.
To receive messages sent to the channel,
call async_recv
or one of the blocking receive methods.
Implementations
sourceimpl<T> Receiver<T> where
T: Send,
impl<T> Receiver<T> where
T: Send,
sourcepub async fn async_recv(&'_ mut self) -> Result<T, RecvError>
pub async fn async_recv(&'_ mut self) -> Result<T, RecvError>
Attempts to wait for a value on this receiver, returning an error if the corresponding channel has hung up.
The future returned by this function completes when there is data available or it’s not possible for more data to be sent (because all senders were dropped). Once a message is sent to the corresponding sender, this receiver will wake up and return that message.
If the corresponding sender has disconnected, or it disconnects while this call is blocking, this call will wake up and return Err to indicate that no more messages can ever be received on this channel. However, since channels are buffered, messages sent before the disconnect will still be properly received.
sourcepub fn try_recv(&self) -> Result<T, TryRecvError>
pub fn try_recv(&self) -> Result<T, TryRecvError>
Attempts to return a pending value on this receiver without blocking.
This method will never block the caller in order to wait for data to become available. Instead, this will always return immediately with a possible option of pending data on the channel.
This is useful for a flavor of “optimistic check” before deciding to block on a receiver.
Compared with recv
, this function has two failure cases
instead of one (one for disconnection, one for an empty buffer).
sourcepub fn recv(&self) -> Result<T, RecvError>
pub fn recv(&self) -> Result<T, RecvError>
Attempts to wait for a value on this receiver, returning an error if the corresponding channel has hung up.
This function will always block the current thread if there is no data available and it’s possible for more data to be sent (at least one sender still exists). Once a message is sent to the corresponding sender, this receiver will wake up and return that message.
If the corresponding sender has disconnected, or it disconnects while this call is blocking, this call will wake up and return Err to indicate that no more messages can ever be received on this channel. However, since channels are buffered, messages sent before the disconnect will still be properly received.
sourcepub fn recv_timeout(&self, timeout: Duration) -> Result<T, RecvTimeoutError>
pub fn recv_timeout(&self, timeout: Duration) -> Result<T, RecvTimeoutError>
Attempts to wait for a value on this receiver, returning an error if the corresponding channel has hung up, or if it waits more than timeout.
This function will always block the current thread if there is no data available and it’s possible for more data to be sent (at least one sender still exists). Once a message is sent to the corresponding sender, this receiver will wake up and return that message.
If the corresponding sender has disconnected, or it disconnects while this call is blocking, this call will wake up and return Err to indicate that no more messages can ever be received on this channel. However, since channels are buffered, messages sent before the disconnect will still be properly received.
Known Issues
There is currently a known issue in the inner std::sync::mpsc::Receiver
that can cause recv_timeout
to panic unexpectedly. See the explanation at
std::sync::mpsc::Receiver::recv_timeout
.
Trait Implementations
sourceimpl<'a, T> IntoIterator for &'a Receiver<T> where
T: Send,
impl<'a, T> IntoIterator for &'a Receiver<T> where
T: Send,
Auto Trait Implementations
impl<T> !RefUnwindSafe for Receiver<T>
impl<T> Send for Receiver<T>
impl<T> !Sync for Receiver<T>
impl<T> Unpin for Receiver<T>
impl<T> !UnwindSafe for Receiver<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<F> IntoFuture for F where
F: Future,
impl<F> IntoFuture for F where
F: Future,
type Output = <F as Future>::Output
type Output = <F as Future>::Output
into_future
)The output that the future will produce on completion.
type IntoFuture = F
type IntoFuture = F
into_future
)Which kind of future are we turning this into?
sourcefn into_future(self) -> <F as IntoFuture>::IntoFuture
fn into_future(self) -> <F as IntoFuture>::IntoFuture
into_future
)Creates a future from a value.