[][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 implements the Stream trait, which means it can act as an asynchronous iterator.

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 it still has senders, this method will block the current task until the receive operation can proceed. If the channel is empty and there are no more senders, this method returns None.

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> Drop for Receiver<T>[src]

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

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

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

type Item = T

Values yielded by the stream.

Auto Trait Implementations

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>

impl<T> !RefUnwindSafe for Receiver<T>

Blanket Implementations

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

impl<T> From<T> for 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.

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

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

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

impl<S, T, E> TryStream for S where
    S: Stream<Item = Result<T, E>> + ?Sized
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

impl<T> StreamExt for T where
    T: Stream + ?Sized
[src]

impl<S> TryStreamExt for S where
    S: TryStream + ?Sized
[src]