Struct hermit_sync::CallOnce
source · pub struct CallOnce { /* private fields */ }Expand description
A synchronization primitive that can only be called once sucessfully.
It behaves similarily to ExclusiveCell<()> but with a more descriptive API.
Examples
use exclusive_cell::CallOnce;
static CALL_ONCE: CallOnce = CallOnce::new();
assert!(CALL_ONCE.call_once().is_ok());
assert!(CALL_ONCE.call_once().is_err());Implementations§
source§impl CallOnce
impl CallOnce
sourcepub fn call_once(&self) -> Result<(), CallOnceError>
pub fn call_once(&self) -> Result<(), CallOnceError>
Mark this CallOnce as called.
Only the first call returns Ok.
All subsequent calls return Err.
Examples
use exclusive_cell::CallOnce;
let call_once = CallOnce::new();
assert!(call_once.call_once().is_ok());
assert!(call_once.call_once().is_err());sourcepub fn was_called(&self) -> bool
pub fn was_called(&self) -> bool
Returns true if call_once has been called.
Examples
use exclusive_cell::CallOnce;
let call_once = CallOnce::new();
assert!(!call_once.was_called());
call_once.call_once().unwrap();
assert!(call_once.was_called());