Struct async_std::channel::Receiver [−][src]
pub struct Receiver<T> { /* fields omitted */ }
Expand description
The receiving side of a channel.
Receivers can be cloned and shared among threads. When all receivers associated with a channel are dropped, the channel becomes closed.
The channel can also be closed manually by calling Receiver::close()
.
Receivers implement the Stream
trait.
Implementations
Attempts to receive a message from the channel.
If the channel is empty or closed, this method returns an error.
Examples
use async_channel::{unbounded, TryRecvError};
let (s, r) = unbounded();
assert_eq!(s.send(1).await, Ok(()));
assert_eq!(r.try_recv(), Ok(1));
assert_eq!(r.try_recv(), Err(TryRecvError::Empty));
drop(s);
assert_eq!(r.try_recv(), Err(TryRecvError::Closed));
Receives a message from the channel.
If the channel is empty, this method waits until there is a message.
If the channel is closed, this method receives a message or returns an error if there are no more messages.
Examples
use async_channel::{unbounded, RecvError};
let (s, r) = unbounded();
assert_eq!(s.send(1).await, Ok(()));
drop(s);
assert_eq!(r.recv().await, Ok(1));
assert_eq!(r.recv().await, Err(RecvError));
Closes the channel.
Returns true
if this call has closed the channel and it was not closed already.
The remaining messages can still be received.
Examples
use async_channel::{unbounded, RecvError};
let (s, r) = unbounded();
assert_eq!(s.send(1).await, Ok(()));
assert!(r.close());
assert_eq!(r.recv().await, Ok(1));
assert_eq!(r.recv().await, Err(RecvError));
Returns true
if the channel is closed.
Examples
use async_channel::{unbounded, RecvError};
let (s, r) = unbounded::<()>();
assert!(!r.is_closed());
drop(s);
assert!(r.is_closed());
Returns true
if the channel is empty.
Examples
use async_channel::unbounded;
let (s, r) = unbounded();
assert!(s.is_empty());
s.send(1).await;
assert!(!s.is_empty());
Returns true
if the channel is full.
Unbounded channels are never full.
Examples
use async_channel::bounded;
let (s, r) = bounded(1);
assert!(!r.is_full());
s.send(1).await;
assert!(r.is_full());
Returns the number of messages in the channel.
Examples
use async_channel::unbounded;
let (s, r) = unbounded();
assert_eq!(r.len(), 0);
s.send(1).await;
s.send(2).await;
assert_eq!(r.len(), 2);
Returns the channel capacity if it’s bounded.
Examples
use async_channel::{bounded, unbounded};
let (s, r) = bounded::<i32>(5);
assert_eq!(r.capacity(), Some(5));
let (s, r) = unbounded::<i32>();
assert_eq!(r.capacity(), None);
Returns the number of receivers for the channel.
Examples
use async_channel::unbounded;
let (s, r) = unbounded::<()>();
assert_eq!(r.receiver_count(), 1);
let r2 = r.clone();
assert_eq!(r.receiver_count(), 2);
Returns the number of senders for the channel.
Examples
use async_channel::unbounded;
let (s, r) = unbounded::<()>();
assert_eq!(r.sender_count(), 1);
let s2 = s.clone();
assert_eq!(r.sender_count(), 2);
Trait Implementations
Returns true
if the stream should no longer be polled.
Auto Trait Implementations
impl<T> RefUnwindSafe for Receiver<T>
impl<T> UnwindSafe for Receiver<T>
Blanket Implementations
Mutably borrows from an owned value. Read more
A convenience for calling Stream::poll_next()
on !
Unpin
types.
fn next(&mut self) -> NextFuture<'_, Self>ⓘNotable traits for NextFuture<'_, S>impl<'_, S> Future for NextFuture<'_, S> where
S: Stream + Unpin + ?Sized, type Output = Option<<S as Stream>::Item>;
where
Self: Unpin,
fn next(&mut self) -> NextFuture<'_, Self>ⓘNotable traits for NextFuture<'_, S>impl<'_, S> Future for NextFuture<'_, S> where
S: Stream + Unpin + ?Sized, type Output = Option<<S as Stream>::Item>;
where
Self: Unpin,
impl<'_, S> Future for NextFuture<'_, S> where
S: Stream + Unpin + ?Sized, type Output = Option<<S as Stream>::Item>;
Retrieves the next item in the stream. Read more
Retrieves the next item in the stream. Read more
fn count(self) -> CountFuture<Self>ⓘNotable traits for CountFuture<S>impl<S> Future for CountFuture<S> where
S: Stream + ?Sized, type Output = usize;
fn count(self) -> CountFuture<Self>ⓘNotable traits for CountFuture<S>impl<S> Future for CountFuture<S> where
S: Stream + ?Sized, type Output = usize;
impl<S> Future for CountFuture<S> where
S: Stream + ?Sized, type Output = usize;
Counts the number of items in the stream. Read more
Maps items of the stream to new values using a closure. Read more
Maps items to streams and then concatenates them. Read more
Concatenates inner streams. Read more
Maps items of the stream to new values using an async closure. Read more
Keeps items of the stream for which predicate
returns true
. Read more
Filters and maps items of the stream using a closure. Read more
Takes items while predicate
returns true
. Read more
Skips items while predicate
returns true
. Read more
Appends another stream to the end of this one. Read more
Clones all items. Read more
Copies all items. Read more
fn collect<C>(self) -> CollectFuture<Self, C>ⓘNotable traits for CollectFuture<S, C>impl<S, C> Future for CollectFuture<S, C> where
S: Stream,
C: Default + Extend<<S as Stream>::Item>, type Output = C;
where
C: Default + Extend<Self::Item>,
fn collect<C>(self) -> CollectFuture<Self, C>ⓘNotable traits for CollectFuture<S, C>impl<S, C> Future for CollectFuture<S, C> where
S: Stream,
C: Default + Extend<<S as Stream>::Item>, type Output = C;
where
C: Default + Extend<Self::Item>,
impl<S, C> Future for CollectFuture<S, C> where
S: Stream,
C: Default + Extend<<S as Stream>::Item>, type Output = C;
Collects all items in the stream into a collection. Read more
fn try_collect<T, E, C>(self) -> TryCollectFuture<Self, C>ⓘNotable traits for TryCollectFuture<S, C>impl<T, E, S, C> Future for TryCollectFuture<S, C> where
S: Stream<Item = Result<T, E>>,
C: Default + Extend<T>, type Output = Result<C, E>;
where
Self: Stream<Item = Result<T, E>>,
C: Default + Extend<T>,
fn try_collect<T, E, C>(self) -> TryCollectFuture<Self, C>ⓘNotable traits for TryCollectFuture<S, C>impl<T, E, S, C> Future for TryCollectFuture<S, C> where
S: Stream<Item = Result<T, E>>,
C: Default + Extend<T>, type Output = Result<C, E>;
where
Self: Stream<Item = Result<T, E>>,
C: Default + Extend<T>,
impl<T, E, S, C> Future for TryCollectFuture<S, C> where
S: Stream<Item = Result<T, E>>,
C: Default + Extend<T>, type Output = Result<C, E>;
Collects all items in the fallible stream into a collection. Read more
Partitions items into those for which predicate
is true
and those for which it is
false
, and then collects them into two collections. Read more
fn fold<T, F>(self, init: T, f: F) -> FoldFuture<Self, F, T>ⓘNotable traits for FoldFuture<S, F, T>impl<S, F, T> Future for FoldFuture<S, F, T> where
S: Stream,
F: FnMut(T, <S as Stream>::Item) -> T, type Output = T;
where
F: FnMut(T, Self::Item) -> T,
fn fold<T, F>(self, init: T, f: F) -> FoldFuture<Self, F, T>ⓘNotable traits for FoldFuture<S, F, T>impl<S, F, T> Future for FoldFuture<S, F, T> where
S: Stream,
F: FnMut(T, <S as Stream>::Item) -> T, type Output = T;
where
F: FnMut(T, Self::Item) -> T,
impl<S, F, T> Future for FoldFuture<S, F, T> where
S: Stream,
F: FnMut(T, <S as Stream>::Item) -> T, type Output = T;
Accumulates a computation over the stream. Read more
fn try_fold<T, E, F, B>(
&mut self,
init: B,
f: F
) -> TryFoldFuture<'_, Self, F, B>ⓘNotable traits for TryFoldFuture<'a, S, F, B>impl<'a, T, E, S, F, B> Future for TryFoldFuture<'a, S, F, B> where
S: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>, type Output = Result<B, E>;
where
Self: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>,
fn try_fold<T, E, F, B>(
&mut self,
init: B,
f: F
) -> TryFoldFuture<'_, Self, F, B>ⓘNotable traits for TryFoldFuture<'a, S, F, B>impl<'a, T, E, S, F, B> Future for TryFoldFuture<'a, S, F, B> where
S: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>, type Output = Result<B, E>;
where
Self: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>,
impl<'a, T, E, S, F, B> Future for TryFoldFuture<'a, S, F, B> where
S: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>, type Output = Result<B, E>;
Accumulates a fallible computation over the stream. Read more
Maps items of the stream to new values using a state value and a closure. Read more
Repeats the stream from beginning to end, forever. Read more
Enumerates items, mapping them to (index, item)
. Read more
Calls a closure on each item and passes it on. Read more
Gets the n
th item of the stream. Read more
fn last(self) -> LastFuture<Self>ⓘNotable traits for LastFuture<S>impl<S> Future for LastFuture<S> where
S: Stream, type Output = Option<<S as Stream>::Item>;
fn last(self) -> LastFuture<Self>ⓘNotable traits for LastFuture<S>impl<S> Future for LastFuture<S> where
S: Stream, type Output = Option<<S as Stream>::Item>;
impl<S> Future for LastFuture<S> where
S: Stream, type Output = Option<<S as Stream>::Item>;
Returns the last item in the stream. Read more
Finds the first item of the stream for which predicate
returns true
. Read more
Finds the index of the first item of the stream for which predicate
returns true
. Read more
Tests if predicate
returns true
for all items in the stream. Read more
Tests if predicate
returns true
for any item in the stream. Read more
fn for_each<F>(self, f: F) -> ForEachFuture<Self, F>ⓘNotable traits for ForEachFuture<S, F>impl<S, F> Future for ForEachFuture<S, F> where
S: Stream,
F: FnMut(<S as Stream>::Item), type Output = ();
where
F: FnMut(Self::Item),
fn for_each<F>(self, f: F) -> ForEachFuture<Self, F>ⓘNotable traits for ForEachFuture<S, F>impl<S, F> Future for ForEachFuture<S, F> where
S: Stream,
F: FnMut(<S as Stream>::Item), type Output = ();
where
F: FnMut(Self::Item),
impl<S, F> Future for ForEachFuture<S, F> where
S: Stream,
F: FnMut(<S as Stream>::Item), type Output = ();
Calls a closure on each item of the stream. Read more
fn try_for_each<F, E>(&mut self, f: F) -> TryForEachFuture<'_, Self, F>ⓘ where
Self: Unpin,
F: FnMut(Self::Item) -> Result<(), E>,
fn try_for_each<F, E>(&mut self, f: F) -> TryForEachFuture<'_, Self, F>ⓘ where
Self: Unpin,
F: FnMut(Self::Item) -> Result<(), E>,
Calls a fallible closure on each item of the stream, stopping on first error. Read more
Zips up two streams into a single stream of pairs. Read more
Collects a stream of pairs into a pair of collections. Read more
Merges with other
stream, preferring items from self
whenever both streams are ready. Read more
Merges with other
stream, with no preference for either stream when both are ready. Read more
Boxes the stream and changes its type to dyn Stream + Send + 'a
. Read more
Boxes the stream and changes its type to dyn Stream + 'a
. Read more