Struct Receiver
struct Receiver<T> { ... }
The receiving side of a channel.
Examples
use thread;
use Duration;
use unbounded;
let = unbounded;
spawn;
assert_eq!; // Received immediately.
assert_eq!; // Received after 1 second.
Implementations
impl<T> Receiver<T>
fn try_recv(self: &Self) -> Result<T, TryRecvError>Attempts to receive a message from the channel without blocking.
This method will either receive a message from the channel immediately or return an error if the channel is empty.
If called on a zero-capacity channel, this method will receive a message only if there happens to be a send operation on the other side of the channel at the same time.
Examples
use ; let = unbounded; assert_eq!; s.send.unwrap; drop; assert_eq!; assert_eq!;fn recv(self: &Self) -> Result<T, RecvError>Blocks the current thread until a message is received or the channel is empty and disconnected.
If the channel is empty and not disconnected, this call will block until the receive operation can proceed. If the channel is empty and becomes disconnected, this call will wake up and return an error.
If called on a zero-capacity channel, this method will wait for a send operation to appear on the other side of the channel.
Examples
use thread; use Duration; use ; let = unbounded; spawn; assert_eq!; assert_eq!;fn recv_timeout(self: &Self, timeout: Duration) -> Result<T, RecvTimeoutError>Waits for a message to be received from the channel, but only for a limited time.
If the channel is empty and not disconnected, this call will block until the receive operation can proceed or the operation times out. If the channel is empty and becomes disconnected, this call will wake up and return an error.
If called on a zero-capacity channel, this method will wait for a send operation to appear on the other side of the channel.
Examples
use thread; use Duration; use ; let = unbounded; spawn; assert_eq!; assert_eq!; assert_eq!;fn recv_deadline(self: &Self, deadline: Instant) -> Result<T, RecvTimeoutError>Waits for a message to be received from the channel, but only before a given deadline.
If the channel is empty and not disconnected, this call will block until the receive operation can proceed or the operation times out. If the channel is empty and becomes disconnected, this call will wake up and return an error.
If called on a zero-capacity channel, this method will wait for a send operation to appear on the other side of the channel.
Examples
use thread; use ; use ; let = unbounded; spawn; let now = now; assert_eq!; assert_eq!; assert_eq!;fn is_empty(self: &Self) -> boolReturns
trueif the channel is empty.Note: Zero-capacity channels are always empty.
Examples
use unbounded; let = unbounded; assert!; s.send.unwrap; assert!;fn is_full(self: &Self) -> boolReturns
trueif the channel is full.Note: Zero-capacity channels are always full.
Examples
use bounded; let = bounded; assert!; s.send.unwrap; assert!;fn len(self: &Self) -> usizeReturns the number of messages in the channel.
Examples
use unbounded; let = unbounded; assert_eq!; s.send.unwrap; s.send.unwrap; assert_eq!;fn capacity(self: &Self) -> Option<usize>If the channel is bounded, returns its capacity.
Examples
use ; let = ; assert_eq!; let = ; assert_eq!; let = ; assert_eq!;fn iter(self: &Self) -> Iter<'_, T>A blocking iterator over messages in the channel.
Each call to
nextblocks waiting for the next message and then returns it. However, if the channel becomes empty and disconnected, it returnsNonewithout blocking.Examples
use thread; use unbounded; let = unbounded; spawn; // Collect all messages from the channel. // Note that the call to `collect` blocks until the sender is dropped. let v: = r.iter.collect; assert_eq!;fn try_iter(self: &Self) -> TryIter<'_, T>A non-blocking iterator over messages in the channel.
Each call to
nextreturns a message if there is one ready to be received. The iterator never blocks waiting for the next message.Examples
use thread; use Duration; use unbounded; let = ; spawn; sleep; // Collect all messages from the channel without blocking. // The third message hasn't been sent yet so we'll collect only the first two. let v: = r.try_iter.collect; assert_eq!;fn same_channel(self: &Self, other: &Receiver<T>) -> boolReturns
trueif receivers belong to the same channel.Examples
use unbounded; let = ; let r2 = r.clone; assert!; let = unbounded; assert!;
impl<T> Any for Receiver<T>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Receiver<T>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Receiver<T>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> Clone for Receiver<T>
fn clone(self: &Self) -> Self
impl<T> CloneToUninit for Receiver<T>
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> Debug for Receiver<T>
fn fmt(self: &Self, f: &mut fmt::Formatter<'_>) -> fmt::Result
impl<T> Drop for Receiver<T>
fn drop(self: &mut Self)
impl<T> Freeze for Receiver<T>
impl<T> From for Receiver<T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> IntoIterator for Receiver<T>
fn into_iter(self: Self) -> <Self as >::IntoIter
impl<T> RefUnwindSafe for Receiver<T>
impl<T> SelectHandle for Receiver<T>
fn try_select(self: &Self, token: &mut Token) -> boolfn deadline(self: &Self) -> Option<Instant>fn register(self: &Self, oper: Operation, cx: &Context) -> boolfn unregister(self: &Self, oper: Operation)fn accept(self: &Self, token: &mut Token, cx: &Context) -> boolfn is_ready(self: &Self) -> boolfn watch(self: &Self, oper: Operation, cx: &Context) -> boolfn unwatch(self: &Self, oper: Operation)
impl<T> ToOwned for Receiver<T>
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T> Unpin for Receiver<T>
impl<T> UnwindSafe for Receiver<T>
impl<T, U> Into for Receiver<T>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for Receiver<T>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Receiver<T>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>