[][src]Struct async_std::sync::Receiver

pub struct Receiver<T> { /* fields omitted */ }
This is supported on unstable only.

The receiving side of a channel.

This type receives messages by calling recv. But it also implements the Stream trait, which means it can act as an asynchronous iterator. This struct is created by the channel function. See its documentation for more.

Examples

use std::time::Duration;

use async_std::sync::channel;
use async_std::task;

let (s, r) = channel(100);

task::spawn(async move {
    s.send(1).await;
    task::sleep(Duration::from_secs(1)).await;
    s.send(2).await;
});

assert_eq!(r.recv().await, Some(1)); // Received immediately.
assert_eq!(r.recv().await, Some(2)); // Received after 1 second.

Methods

impl<T> Receiver<T>[src]

pub async fn recv<'_>(&'_ self) -> Option<T>[src]

This is supported on unstable only.

Receives a message from the channel.

If the channel is empty and still has senders, this method will wait until a message is sent into the channel or until all senders get dropped.

Examples

use async_std::sync::channel;
use async_std::task;

let (s, r) = channel(1);

task::spawn(async move {
    s.send(1).await;
    s.send(2).await;
});

assert_eq!(r.recv().await, Some(1));
assert_eq!(r.recv().await, Some(2));
assert_eq!(r.recv().await, None);

pub fn capacity(&self) -> usize[src]

This is supported on unstable only.

Returns the channel capacity.

Examples

use async_std::sync::channel;

let (_, r) = channel::<i32>(5);
assert_eq!(r.capacity(), 5);

pub fn is_empty(&self) -> bool[src]

This is supported on unstable only.

Returns true if the channel is empty.

Examples

use async_std::sync::channel;

let (s, r) = channel(1);

assert!(r.is_empty());
s.send(0).await;
assert!(!r.is_empty());

pub fn is_full(&self) -> bool[src]

This is supported on unstable only.

Returns true if the channel is full.

Examples

use async_std::sync::channel;

let (s, r) = channel(1);

assert!(!r.is_full());
s.send(0).await;
assert!(r.is_full());

pub fn len(&self) -> usize[src]

This is supported on unstable only.

Returns the number of messages in the channel.

Examples

use async_std::sync::channel;

let (s, r) = channel(2);
assert_eq!(r.len(), 0);

s.send(1).await;
s.send(2).await;
assert_eq!(r.len(), 2);

Trait Implementations

impl<T> Clone for Receiver<T>[src]

impl<T> Debug for Receiver<T>[src]

impl<T> Drop for Receiver<T>[src]

impl<T> Stream for Receiver<T>[src]

type Item = T

The type of items yielded by this stream. Read more

Auto Trait Implementations

impl<T> !RefUnwindSafe for Receiver<T>

impl<T> Send for Receiver<T> where
    T: Send

impl<T> Sync for Receiver<T> where
    T: Send

impl<T> Unpin for Receiver<T>

impl<T> !UnwindSafe for Receiver<T>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.