Struct tokio::sync::watch::Sender [−][src]
pub struct Sender<T> { /* fields omitted */ }
Implementations
impl<T> Sender<T>
[src]
impl<T> Sender<T>
[src]pub fn send(&self, value: T) -> Result<(), SendError<T>>
[src]
Sends a new value via the channel, notifying all receivers.
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 (tx, _) = watch::channel("hello"); assert_eq!(*tx.borrow(), "hello");
pub fn is_closed(&self) -> bool
[src]
Checks if the channel has been closed. This happens when all receivers have dropped.
Examples
let (tx, rx) = tokio::sync::watch::channel(()); assert!(!tx.is_closed()); drop(rx); assert!(tx.is_closed());
pub async fn closed(&self)
[src]
Completes when all receivers have dropped.
This allows the producer to get notified when interest in the produced values is canceled and immediately stop doing work.
Cancel safety
This method is cancel safe. Once the channel is closed, it stays closed
forever and all future calls to closed
will return immediately.
Examples
use tokio::sync::watch; #[tokio::main] async fn main() { let (tx, rx) = watch::channel("hello"); tokio::spawn(async move { // use `rx` drop(rx); }); // Waits for `rx` to drop tx.closed().await; println!("the `rx` handles dropped") }
pub fn receiver_count(&self) -> usize
[src]
Returns the number of receivers that currently exist
Examples
use tokio::sync::watch; #[tokio::main] async fn main() { let (tx, rx1) = watch::channel("hello"); assert_eq!(1, tx.receiver_count()); let mut _rx2 = rx1.clone(); assert_eq!(2, tx.receiver_count()); }
Trait Implementations
Auto Trait Implementations
impl<T> !RefUnwindSafe for Sender<T>
impl<T> Send for Sender<T> where
T: Send + Sync,
T: Send + Sync,
impl<T> Sync for Sender<T> where
T: Send + Sync,
T: Send + Sync,