pub struct CallOnce { /* private fields */ }
Expand description
A type that can only be called successfully once.
This is a simple wrapper around an AtomicBool
with a more descriptive API.
While
CallOnce
is synchronized and thread-safe, it does not synchronize other memory accesses.
Examples
use call_once::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 call_once::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 call_once::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