Struct async_std::sync::Receiver [−][src]
new channel api at async_std::channel
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
#![allow(deprecated)] use std::time::Duration; use async_std::sync::channel; use async_std::task; let (s, r) = channel(100); task::spawn(async move { s.send(1usize).await; task::sleep(Duration::from_secs(1)).await; s.send(2).await; }); assert_eq!(r.recv().await?, 1); // Received immediately. assert_eq!(r.recv().await?, 2); // Received after 1 second.
Implementations
impl<T> Receiver<T>[src]
pub async fn recv(&self) -> Result<T, RecvError>[src]
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 it. Once all senders have been dropped it will return RecvError.
Examples
#![allow(deprecated)] use async_std::sync::channel; use async_std::task; let (s, r) = channel(1); task::spawn(async move { s.send(1usize).await; s.send(2).await; // Then we drop the sender }); assert_eq!(r.recv().await?, 1); assert_eq!(r.recv().await?, 2); assert!(r.recv().await.is_err());
pub fn try_recv(&self) -> Result<T, TryRecvError>[src]
Attempts to receive a message from the channel.
If the channel is empty, this method will return an error.
Examples
#![allow(deprecated)] use async_std::sync::channel; let (s, r) = channel(1); s.send(1u8).await; assert!(r.try_recv().is_ok()); assert!(r.try_recv().is_err());
pub fn capacity(&self) -> usize[src]
Returns the channel capacity.
Examples
#![allow(deprecated)] use async_std::sync::channel; let (_, r) = channel::<i32>(5); assert_eq!(r.capacity(), 5);
pub fn is_empty(&self) -> bool[src]
Returns true if the channel is empty.
Examples
#![allow(deprecated)] 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]
Returns true if the channel is full.
Examples
#![allow(deprecated)] 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]
Returns the number of messages in the channel.
Examples
#![allow(deprecated)] 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]
Auto Trait Implementations
impl<T> !RefUnwindSafe for Receiver<T>
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>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut Tⓘ[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<S> StreamExt for S where
S: Stream + ?Sized, [src]
S: Stream + ?Sized,
pub fn poll_next(&mut self, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> where
Self: Unpin, [src]
Self: Unpin,
pub 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, [src]
Notable traits for NextFuture<'_, S>
impl<'_, S> Future for NextFuture<'_, S> where
S: Stream + Unpin + ?Sized, type Output = Option<<S as Stream>::Item>;Self: Unpin,
pub fn try_next<T, E>(&mut self) -> TryNextFuture<'_, Self>ⓘNotable traits for TryNextFuture<'_, S>
impl<'_, T, E, S> Future for TryNextFuture<'_, S> where
S: Stream<Item = Result<T, E>> + Unpin + ?Sized, type Output = Result<Option<T>, E>; where
Self: Stream<Item = Result<T, E>> + Unpin, [src]
Notable traits for TryNextFuture<'_, S>
impl<'_, T, E, S> Future for TryNextFuture<'_, S> where
S: Stream<Item = Result<T, E>> + Unpin + ?Sized, type Output = Result<Option<T>, E>;Self: Stream<Item = Result<T, E>> + Unpin,
pub fn count(self) -> CountFuture<Self>ⓘNotable traits for CountFuture<S>
impl<S> Future for CountFuture<S> where
S: Stream + ?Sized, type Output = usize;[src]
Notable traits for CountFuture<S>
impl<S> Future for CountFuture<S> where
S: Stream + ?Sized, type Output = usize;pub fn map<T, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> T, [src]
F: FnMut(Self::Item) -> T,
pub fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where
F: FnMut(Self::Item) -> U,
U: Stream, [src]
F: FnMut(Self::Item) -> U,
U: Stream,
pub fn flatten(self) -> Flatten<Self> where
Self::Item: Stream, [src]
Self::Item: Stream,
pub fn then<F, Fut>(self, f: F) -> Then<Self, F, Fut> where
F: FnMut(Self::Item) -> Fut,
Fut: Future, [src]
F: FnMut(Self::Item) -> Fut,
Fut: Future,
pub fn filter<P>(self, predicate: P) -> Filter<Self, P> where
P: FnMut(&Self::Item) -> bool, [src]
P: FnMut(&Self::Item) -> bool,
pub fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F> where
F: FnMut(Self::Item) -> Option<T>, [src]
F: FnMut(Self::Item) -> Option<T>,
pub fn take(self, n: usize) -> Take<Self>[src]
pub fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
P: FnMut(&Self::Item) -> bool, [src]
P: FnMut(&Self::Item) -> bool,
pub fn skip(self, n: usize) -> Skip<Self>[src]
pub fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
P: FnMut(&Self::Item) -> bool, [src]
P: FnMut(&Self::Item) -> bool,
pub fn step_by(self, step: usize) -> StepBy<Self>[src]
pub fn chain<U>(self, other: U) -> Chain<Self, U> where
U: Stream<Item = Self::Item>, [src]
U: Stream<Item = Self::Item>,
pub fn cloned<'a, T>(self) -> Cloned<Self> where
Self: Stream<Item = &'a T>,
T: Clone + 'a, [src]
Self: Stream<Item = &'a T>,
T: Clone + 'a,
pub fn copied<'a, T>(self) -> Copied<Self> where
Self: Stream<Item = &'a T>,
T: Copy + 'a, [src]
Self: Stream<Item = &'a T>,
T: Copy + 'a,
pub fn collect<C>(self) -> CollectFuture<Self, C>ⓘNotable traits for CollectFuture<S, C>
impl<S, C> Future for CollectFuture<S, C> where
C: Default + Extend<<S as Stream>::Item>,
S: Stream, type Output = C; where
C: Default + Extend<Self::Item>, [src]
Notable traits for CollectFuture<S, C>
impl<S, C> Future for CollectFuture<S, C> where
C: Default + Extend<<S as Stream>::Item>,
S: Stream, type Output = C;C: Default + Extend<Self::Item>,
pub 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
C: Default + Extend<T>,
S: Stream<Item = Result<T, E>>, type Output = Result<C, E>; where
Self: Stream<Item = Result<T, E>>,
C: Default + Extend<T>, [src]
Notable traits for TryCollectFuture<S, C>
impl<T, E, S, C> Future for TryCollectFuture<S, C> where
C: Default + Extend<T>,
S: Stream<Item = Result<T, E>>, type Output = Result<C, E>;Self: Stream<Item = Result<T, E>>,
C: Default + Extend<T>,
pub fn partition<B, P>(self, predicate: P) -> PartitionFuture<Self, P, B>ⓘ where
P: FnMut(&Self::Item) -> bool,
B: Default + Extend<Self::Item>, [src]
P: FnMut(&Self::Item) -> bool,
B: Default + Extend<Self::Item>,
pub 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
F: FnMut(T, <S as Stream>::Item) -> T,
S: Stream, type Output = T; where
F: FnMut(T, Self::Item) -> T, [src]
Notable traits for FoldFuture<S, F, T>
impl<S, F, T> Future for FoldFuture<S, F, T> where
F: FnMut(T, <S as Stream>::Item) -> T,
S: Stream, type Output = T;F: FnMut(T, Self::Item) -> T,
pub 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
F: FnMut(B, T) -> Result<B, E>,
S: Stream<Item = Result<T, E>> + Unpin, type Output = Result<B, E>; where
Self: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>, [src]
&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
F: FnMut(B, T) -> Result<B, E>,
S: Stream<Item = Result<T, E>> + Unpin, type Output = Result<B, E>;Self: Stream<Item = Result<T, E>> + Unpin,
F: FnMut(B, T) -> Result<B, E>,
pub fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where
F: FnMut(&mut St, Self::Item) -> Option<B>, [src]
F: FnMut(&mut St, Self::Item) -> Option<B>,
pub fn fuse(self) -> Fuse<Self>[src]
pub fn cycle(self) -> Cycle<Self> where
Self: Clone, [src]
Self: Clone,
pub fn enumerate(self) -> Enumerate<Self>[src]
pub fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&Self::Item), [src]
F: FnMut(&Self::Item),
pub fn nth(&mut self, n: usize) -> NthFuture<'_, Self>ⓘ where
Self: Unpin, [src]
Self: Unpin,
pub 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>;[src]
Notable traits for LastFuture<S>
impl<S> Future for LastFuture<S> where
S: Stream, type Output = Option<<S as Stream>::Item>;pub fn find<P>(&mut self, predicate: P) -> FindFuture<'_, Self, P>ⓘ where
Self: Unpin,
P: FnMut(&Self::Item) -> bool, [src]
Self: Unpin,
P: FnMut(&Self::Item) -> bool,
pub fn find_map<F, B>(&mut self, f: F) -> FindMapFuture<'_, Self, F>ⓘ where
Self: Unpin,
F: FnMut(Self::Item) -> Option<B>, [src]
Self: Unpin,
F: FnMut(Self::Item) -> Option<B>,
pub fn position<P>(&mut self, predicate: P) -> PositionFuture<'_, Self, P>ⓘ where
Self: Unpin,
P: FnMut(Self::Item) -> bool, [src]
Self: Unpin,
P: FnMut(Self::Item) -> bool,
pub fn all<P>(&mut self, predicate: P) -> AllFuture<'_, Self, P>ⓘ where
Self: Unpin,
P: FnMut(Self::Item) -> bool, [src]
Self: Unpin,
P: FnMut(Self::Item) -> bool,
pub fn any<P>(&mut self, predicate: P) -> AnyFuture<'_, Self, P>ⓘ where
Self: Unpin,
P: FnMut(Self::Item) -> bool, [src]
Self: Unpin,
P: FnMut(Self::Item) -> bool,
pub 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
F: FnMut(<S as Stream>::Item),
S: Stream, type Output = (); where
F: FnMut(Self::Item), [src]
Notable traits for ForEachFuture<S, F>
impl<S, F> Future for ForEachFuture<S, F> where
F: FnMut(<S as Stream>::Item),
S: Stream, type Output = ();F: FnMut(Self::Item),
pub fn try_for_each<F, E>(&mut self, f: F) -> TryForEachFuture<'_, Self, F>ⓘ where
Self: Unpin,
F: FnMut(Self::Item) -> Result<(), E>, [src]
Self: Unpin,
F: FnMut(Self::Item) -> Result<(), E>,
pub fn zip<U>(self, other: U) -> Zip<Self, U> where
U: Stream, [src]
U: Stream,
pub fn unzip<A, B, FromA, FromB>(self) -> UnzipFuture<Self, FromA, FromB>ⓘ where
Self: Stream<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B>, [src]
Self: Stream<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
pub fn or<S>(self, other: S) -> Or<Self, S> where
S: Stream<Item = Self::Item>, [src]
S: Stream<Item = Self::Item>,
pub fn race<S>(self, other: S) -> Race<Self, S> where
S: Stream<Item = Self::Item>, [src]
S: Stream<Item = Self::Item>,
pub fn boxed<'a>(
self
) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a + Send, Global>>ⓘ where
Self: Send + 'a, [src]
self
) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a + Send, Global>>ⓘ where
Self: Send + 'a,
pub fn boxed_local<'a>(
self
) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a, Global>>ⓘ where
Self: 'a, [src]
self
) -> Pin<Box<dyn Stream<Item = Self::Item> + 'a, Global>>ⓘ where
Self: 'a,
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub 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 = Infallible
The type returned in the event of a conversion error.
pub 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.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<S, T, E> TryStream for S where
S: Stream<Item = Result<T, E>> + ?Sized, [src]
S: Stream<Item = Result<T, E>> + ?Sized,