[][src]Struct rbatis_core::runtime::Receiver

pub struct Receiver<T> { /* fields omitted */ }

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(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

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

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

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

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

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

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

Values yielded by the stream.

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> Conv for T

impl<T> Conv for T

impl<T> FmtForward for T

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

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

impl<I> IntoStream for I where
    I: Stream
[src]

type Item = <I as Stream>::Item

The type of the elements being iterated over.

type IntoStream = I

Which kind of stream are we turning this into?

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Same<T> for T

type Output = T

Should always be Self

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

impl<S> StreamExt for S where
    S: Stream + ?Sized

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

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

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

type Owned = T

The resulting type after obtaining ownership.

impl<T> TryConv for T

impl<T> TryConv for T

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<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<S> TryStreamExt for S where
    S: TryStream + ?Sized
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,