Struct tokio_stream::wrappers::WatchStream  
source · pub struct WatchStream<T> { /* private fields */ }Expand description
A wrapper around tokio::sync::watch::Receiver that implements Stream.
This stream will start by yielding the current value when the WatchStream is polled,
regardless of whether it was the initial value or sent afterwards,
unless you use WatchStream<T>::from_changes.
Examples
use tokio_stream::{StreamExt, wrappers::WatchStream};
use tokio::sync::watch;
let (tx, rx) = watch::channel("hello");
let mut rx = WatchStream::new(rx);
assert_eq!(rx.next().await, Some("hello"));
tx.send("goodbye").unwrap();
assert_eq!(rx.next().await, Some("goodbye"));use tokio_stream::{StreamExt, wrappers::WatchStream};
use tokio::sync::watch;
let (tx, rx) = watch::channel("hello");
let mut rx = WatchStream::new(rx);
// existing rx output with "hello" is ignored here
tx.send("goodbye").unwrap();
assert_eq!(rx.next().await, Some("goodbye"));Example with WatchStream<T>::from_changes:
use futures::future::FutureExt;
use tokio::sync::watch;
use tokio_stream::{StreamExt, wrappers::WatchStream};
let (tx, rx) = watch::channel("hello");
let mut rx = WatchStream::from_changes(rx);
// no output from rx is available at this point - let's check this:
assert!(rx.next().now_or_never().is_none());
tx.send("goodbye").unwrap();
assert_eq!(rx.next().await, Some("goodbye"));