Expand description
Asynchronous and shareable container which value is set once.
The OnceWatchget()
and set()
methods.
The values is set at most once. The readers call get()
and wait until the value is ready.
use async_once_watch::OnceWatch;
use async_std::task::{sleep, spawn};
use once_cell::sync::Lazy;
use std::time::Duration;
static STATE: Lazy<OnceWatch<u8>> = Lazy::new(OnceWatch::new);
let secret = 10;
/* Writer */
spawn(async move {
sleep(Duration::from_millis(500)).await;
// First write is fine
let ok = STATE.set(secret).is_ok();
assert!(ok);
// Second write is not allowed
let ok = STATE.set(secret).is_ok();
assert!(!ok);
});
/* Reader */
spawn(async move {
let received = *STATE.get().await;
assert_eq!(received, secret);
});
Structsยง
- Once
Watch - The shareable container which value is set once.