[−][src]Struct async_std::sync::Receiver
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]
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]
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]
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]
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]
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> Stream for Receiver<T>
[src]
type Item = T
The type of items yielded by this stream. Read more
fn poll_next(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Self::Item>>
[src]
fn next(&mut self) -> ImplFuture<Option<Self::Item>> where
Self: Unpin,
[src]
Self: Unpin,
fn take(self, n: usize) -> Take<Self> where
Self: Sized,
[src]
Self: Sized,
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
[src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn throttle(self, d: Duration) -> Throttle<Self> where
Self: Sized,
[src]
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self> where
Self: Sized,
[src]
Self: Sized,
fn chain<U>(self, other: U) -> Chain<Self, U> where
Self: Sized,
U: Stream<Item = Self::Item> + Sized,
[src]
Self: Sized,
U: Stream<Item = Self::Item> + Sized,
fn cloned<'a, T>(self) -> Cloned<Self> where
Self: Sized + Stream<Item = &'a T>,
T: Clone + 'a,
[src]
Self: Sized + Stream<Item = &'a T>,
T: Clone + 'a,
fn copied<'a, T>(self) -> Copied<Self> where
Self: Sized + Stream<Item = &'a T>,
T: Copy + 'a,
[src]
Self: Sized + Stream<Item = &'a T>,
T: Copy + 'a,
fn cycle(self) -> Cycle<Self> where
Self: Clone + Sized,
[src]
Self: Clone + Sized,
fn enumerate(self) -> Enumerate<Self> where
Self: Sized,
[src]
Self: Sized,
fn map<B, F>(self, f: F) -> Map<Self, F> where
Self: Sized,
F: FnMut(Self::Item) -> B,
[src]
Self: Sized,
F: FnMut(Self::Item) -> B,
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
Self: Sized,
F: FnMut(&Self::Item),
[src]
Self: Sized,
F: FnMut(&Self::Item),
fn last(self) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
[src]
Self: Sized,
fn fuse(self) -> Fuse<Self> where
Self: Sized,
[src]
Self: Sized,
fn filter<P>(self, predicate: P) -> Filter<Self, P> where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
[src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where
Self: Sized,
U: IntoStream,
F: FnMut(Self::Item) -> U,
[src]
Self: Sized,
U: IntoStream,
F: FnMut(Self::Item) -> U,
fn flatten(self) -> Flatten<Self> where
Self: Sized,
Self::Item: IntoStream,
[src]
Self: Sized,
Self::Item: IntoStream,
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
[src]
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
fn min_by_key<B, F>(self, key_by: F) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
B: Ord,
F: FnMut(&Self::Item) -> B,
[src]
Self: Sized,
B: Ord,
F: FnMut(&Self::Item) -> B,
fn max_by_key<B, F>(self, key_by: F) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
B: Ord,
F: FnMut(&Self::Item) -> B,
[src]
Self: Sized,
B: Ord,
F: FnMut(&Self::Item) -> B,
fn min_by<F>(self, compare: F) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
fn max<F>(self) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
fn min<F>(self) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
fn max_by<F>(self, compare: F) -> ImplFuture<Option<Self::Item>> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
fn nth(&mut self, n: usize) -> ImplFuture<Option<Self::Item>> where
Self: Unpin + Sized,
[src]
Self: Unpin + Sized,
fn all<F>(&mut self, f: F) -> ImplFuture<bool> where
Self: Unpin + Sized,
F: FnMut(Self::Item) -> bool,
[src]
Self: Unpin + Sized,
F: FnMut(Self::Item) -> bool,
fn find<P>(&mut self, p: P) -> ImplFuture<Option<Self::Item>> where
Self: Unpin + Sized,
P: FnMut(&Self::Item) -> bool,
[src]
Self: Unpin + Sized,
P: FnMut(&Self::Item) -> bool,
fn find_map<F, B>(&mut self, f: F) -> ImplFuture<Option<B>> where
Self: Unpin + Sized,
F: FnMut(Self::Item) -> Option<B>,
[src]
Self: Unpin + Sized,
F: FnMut(Self::Item) -> Option<B>,
fn fold<B, F>(self, init: B, f: F) -> ImplFuture<B> where
Self: Sized,
F: FnMut(B, Self::Item) -> B,
[src]
Self: Sized,
F: FnMut(B, Self::Item) -> B,
fn partition<B, F>(self, f: F) -> ImplFuture<(B, B)> where
Self: Sized,
F: FnMut(&Self::Item) -> bool,
B: Default + Extend<Self::Item>,
[src]
Self: Sized,
F: FnMut(&Self::Item) -> bool,
B: Default + Extend<Self::Item>,
fn for_each<F>(self, f: F) -> ImplFuture<()> where
Self: Sized,
F: FnMut(Self::Item),
[src]
Self: Sized,
F: FnMut(Self::Item),
fn any<F>(&mut self, f: F) -> ImplFuture<bool> where
Self: Unpin + Sized,
F: FnMut(Self::Item) -> bool,
[src]
Self: Unpin + Sized,
F: FnMut(Self::Item) -> bool,
fn by_ref(&mut self) -> &mut Self
[src]
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where
Self: Sized,
F: FnMut(&mut St, Self::Item) -> Option<B>,
[src]
Self: Sized,
F: FnMut(&mut St, Self::Item) -> Option<B>,
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
[src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn skip(self, n: usize) -> Skip<Self> where
Self: Sized,
[src]
Self: Sized,
fn timeout(self, dur: Duration) -> Timeout<Self> where
Self: Stream + Sized,
[src]
Self: Stream + Sized,
fn try_fold<B, F, T, E>(&mut self, init: T, f: F) -> ImplFuture<Result<T, E>> where
Self: Unpin + Sized,
F: FnMut(B, Self::Item) -> Result<T, E>,
[src]
Self: Unpin + Sized,
F: FnMut(B, Self::Item) -> Result<T, E>,
fn try_for_each<F, E>(&mut self, f: F) -> ImplFuture<E> where
Self: Unpin + Sized,
F: FnMut(Self::Item) -> Result<(), E>,
[src]
Self: Unpin + Sized,
F: FnMut(Self::Item) -> Result<(), E>,
fn zip<U>(self, other: U) -> Zip<Self, U> where
Self: Sized,
U: Stream,
[src]
Self: Sized,
U: Stream,
fn unzip<A, B, FromA, FromB>(self) -> ImplFuture<(FromA, FromB)> where
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Stream<Item = (A, B)> + Sized,
[src]
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Stream<Item = (A, B)> + Sized,
fn collect<'a, B>(self) -> ImplFuture<B> where
Self: Sized + 'a,
B: FromStream<Self::Item>,
[src]
Self: Sized + 'a,
B: FromStream<Self::Item>,
fn merge<U>(self, other: U) -> Merge<Self, U> where
Self: Sized,
U: Stream<Item = Self::Item> + Sized,
[src]
Self: Sized,
U: Stream<Item = Self::Item> + Sized,
fn partial_cmp<S>(self, other: S) -> ImplFuture<Option<Ordering>> where
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
[src]
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
fn position<P>(&mut self, predicate: P) -> ImplFuture<Option<usize>> where
Self: Unpin + Sized,
P: FnMut(Self::Item) -> bool,
[src]
Self: Unpin + Sized,
P: FnMut(Self::Item) -> bool,
fn cmp<S>(self, other: S) -> ImplFuture<Ordering> where
Self: Sized + Stream,
S: Stream,
Self::Item: Ord,
[src]
Self: Sized + Stream,
S: Stream,
Self::Item: Ord,
fn count(self) -> ImplFuture<usize> where
Self: Sized,
[src]
Self: Sized,
fn ne<S>(self, other: S) -> ImplFuture<bool> where
Self: Sized,
S: Sized + Stream,
Self::Item: PartialEq<S::Item>,
[src]
Self: Sized,
S: Sized + Stream,
Self::Item: PartialEq<S::Item>,
fn ge<S>(self, other: S) -> ImplFuture<bool> where
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
[src]
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
fn eq<S>(self, other: S) -> ImplFuture<bool> where
Self: Sized + Stream,
S: Sized + Stream,
Self::Item: PartialEq<S::Item>,
[src]
Self: Sized + Stream,
S: Sized + Stream,
Self::Item: PartialEq<S::Item>,
fn gt<S>(self, other: S) -> ImplFuture<bool> where
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
[src]
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
fn le<S>(self, other: S) -> ImplFuture<bool> where
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
[src]
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
fn lt<S>(self, other: S) -> ImplFuture<bool> where
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
[src]
Self: Sized + Stream,
S: Stream,
Self::Item: PartialOrd<S::Item>,
fn sum<'a, S>(self) -> ImplFuture<S> where
Self: Sized + Stream<Item = S> + 'a,
S: Sum<Self::Item>,
[src]
Self: Sized + Stream<Item = S> + 'a,
S: Sum<Self::Item>,
fn product<'a, P>(self) -> ImplFuture<P> where
Self: Sized + Stream<Item = P> + 'a,
P: Product,
[src]
Self: Sized + Stream<Item = P> + 'a,
P: Product,
impl<T> Drop for Receiver<T>
[src]
impl<T> Clone for Receiver<T>
[src]
impl<T> Debug for Receiver<T>
[src]
Auto Trait Implementations
impl<T> Send for Receiver<T> where
T: Send,
T: Send,
impl<T> Sync for Receiver<T> where
T: Send,
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]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = !
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,