Struct tokio::sync::watch::Receiver[][src]

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

Receives values from the associated Sender.

Instances are created by the channel function.

Implementations

impl<T> Receiver<T>[src]

pub fn borrow(&self) -> Ref<'_, T>[src]

Returns a reference to the most recently sent value

Outstanding borrows hold a read lock. This means that long lived borrows could cause the send half to block. It is recommended to keep the borrow as short lived as possible.

Examples

use tokio::sync::watch;

let (_, rx) = watch::channel("hello");
assert_eq!(*rx.borrow(), "hello");

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

pub async fn recv(&mut self) -> Option<T>[src]

Attempts to clone the latest value sent via the channel.

If this is the first time the function is called on a Receiver instance, then the function completes immediately with the current value held by the channel. On the next call, the function waits until a new value is sent in the channel.

None is returned if the Sender half is dropped.

Examples

use tokio::sync::watch;

#[tokio::main]
async fn main() {
    let (tx, mut rx) = watch::channel("hello");

    let v = rx.recv().await.unwrap();
    assert_eq!(v, "hello");

    tokio::spawn(async move {
        tx.broadcast("goodbye").unwrap();
    });

    // Waits for the new task to spawn and send the value.
    let v = rx.recv().await.unwrap();
    assert_eq!(v, "goodbye");

    let v = rx.recv().await;
    assert!(v.is_none());
}

Trait Implementations

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

fn clone(&self) -> Self[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

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

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

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

fn drop(&mut self)[src]

Executes the destructor for this type. Read more

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

type Item = T

Values yielded by the stream.

fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<T>>[src]

Attempt to pull out the next value of this stream, registering the current task for wakeup if the value is not yet available, and returning None if the stream is exhausted. Read more

fn size_hint(&self) -> (usize, Option<usize>)[src]

Returns the bounds on the remaining length of the stream. Read more

Auto Trait Implementations

impl<T> !RefUnwindSafe for Receiver<T>

impl<T> Send for Receiver<T> where
    T: Send + Sync

impl<T> Sync for Receiver<T> where
    T: Send + Sync

impl<T> Unpin for Receiver<T>

impl<T> !UnwindSafe for Receiver<T>

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

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

fn next(&mut self) -> Next<'_, Self> where
    Self: Unpin
[src]

Consumes and returns the next value in the stream or None if the stream is finished. Read more

fn try_next<T, E>(&mut self) -> TryNext<'_, Self> where
    Self: Stream<Item = Result<T, E>> + Unpin
[src]

Consumes and returns the next item in the stream. If an error is encountered before the next item, the error is returned instead. Read more

fn map<T, F>(self, f: F) -> Map<Self, F> where
    F: FnMut(Self::Item) -> T,
    Self: Sized
[src]

Maps this stream’s items to a different type, returning a new stream of the resulting type. Read more

fn merge<U>(self, other: U) -> Merge<Self, U> where
    U: Stream<Item = Self::Item>,
    Self: Sized
[src]

Combine two streams into one by interleaving the output of both as it is produced. Read more

fn filter<F>(self, f: F) -> Filter<Self, F> where
    F: FnMut(&Self::Item) -> bool,
    Self: Sized
[src]

Filters the values produced by this stream according to the provided predicate. Read more

fn filter_map<T, F>(self, f: F) -> FilterMap<Self, F> where
    F: FnMut(Self::Item) -> Option<T>,
    Self: Sized
[src]

Filters the values produced by this stream while simultaneously mapping them to a different type according to the provided closure. Read more

fn fuse(self) -> Fuse<Self> where
    Self: Sized
[src]

Creates a stream which ends after the first None. Read more

fn take(self, n: usize) -> Take<Self> where
    Self: Sized
[src]

Creates a new stream of at most n items of the underlying stream. Read more

fn take_while<F>(self, f: F) -> TakeWhile<Self, F> where
    F: FnMut(&Self::Item) -> bool,
    Self: Sized
[src]

Take elements from this stream while the provided predicate resolves to true. Read more

fn all<F>(&mut self, f: F) -> AllFuture<'_, Self, F> where
    Self: Unpin,
    F: FnMut(Self::Item) -> bool
[src]

Tests if every element of the stream matches a predicate. Read more

fn any<F>(&mut self, f: F) -> AnyFuture<'_, Self, F> where
    Self: Unpin,
    F: FnMut(Self::Item) -> bool
[src]

Tests if any element of the stream matches a predicate. Read more

fn chain<U>(self, other: U) -> Chain<Self, U> where
    U: Stream<Item = Self::Item>,
    Self: Sized
[src]

Combine two streams into one by first returning all values from the first stream then all values from the second stream. Read more

fn fold<B, F>(self, init: B, f: F) -> FoldFuture<Self, B, F> where
    Self: Sized,
    F: FnMut(B, Self::Item) -> B, 
[src]

A combinator that applies a function to every element in a stream producing a single, final value. Read more

fn collect<T>(self) -> Collect<Self, T> where
    T: FromStream<Self::Item>,
    Self: Sized
[src]

Drain stream pushing all emitted values into a collection. Read more

fn timeout(self, duration: Duration) -> Timeout<Self> where
    Self: Sized
[src]

Applies a per-item timeout to the passed stream. Read more

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

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

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

pub fn try_poll_next(
    self: Pin<&mut S>,
    cx: &mut Context<'_>
) -> Poll<Option<Result<<S as TryStream>::Ok, <S as TryStream>::Error>>>
[src]

Poll this TryStream as if it were a Stream. Read more