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());Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for CallOnce
impl Send for CallOnce
impl Sync for CallOnce
impl Unpin for CallOnce
impl UnwindSafe for CallOnce
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more