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 !Freeze for CallOnce
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