pub struct Receiver<T: Send + 'static> { /* private fields */ }
Expand description
Implementations§
source§impl<T: Send + 'static> Receiver<T>
impl<T: Send + 'static> Receiver<T>
sourcepub fn has_sender(&self) -> bool
pub fn has_sender(&self) -> bool
Does anyone can send a value through this channel.
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. Once a message is
sent to the corresponding Sender
(or Sender
), then 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 iter(&self) -> Iter<'_, T> ⓘ
pub fn iter(&self) -> Iter<'_, T> ⓘ
Returns an iterator that will block waiting for messages, but never
[panic!
]. It will return [None
] when the channel has hung up.