pub struct DoubleCheckedLock;Expand description
Entry type for one-shot double-checked lock execution.
This API is useful when you do not need to keep a reusable executor
instance. It delegates to DoubleCheckedLockExecutor internally.
§Examples
use std::sync::{Arc, atomic::{AtomicBool, Ordering}};
use qubit_dcl::{ArcMutex, DoubleCheckedLock, Lock};
let data = ArcMutex::new(10);
let skip = Arc::new(AtomicBool::new(false));
let result = DoubleCheckedLock::on(data.clone())
.when({
let skip = skip.clone();
move || !skip.load(Ordering::Acquire)
})
.call_with(|value: &mut i32| {
*value += 5;
Ok::<i32, std::io::Error>(*value)
})
.get_result();
assert!(result.is_success());
assert_eq!(data.read(|value| *value), 15);Implementations§
Source§impl DoubleCheckedLock
impl DoubleCheckedLock
Sourcepub fn on<L, T>(lock: L) -> DoubleCheckedLockBuilder<L, T>where
L: Lock<T>,
pub fn on<L, T>(lock: L) -> DoubleCheckedLockBuilder<L, T>where
L: Lock<T>,
Starts one-shot double-checked lock configuration by attaching a lock.
Trait Implementations§
Source§impl Clone for DoubleCheckedLock
impl Clone for DoubleCheckedLock
Source§fn clone(&self) -> DoubleCheckedLock
fn clone(&self) -> DoubleCheckedLock
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for DoubleCheckedLock
impl Debug for DoubleCheckedLock
Source§impl Default for DoubleCheckedLock
impl Default for DoubleCheckedLock
Source§fn default() -> DoubleCheckedLock
fn default() -> DoubleCheckedLock
Returns the “default value” for a type. Read more
impl Copy for DoubleCheckedLock
Auto Trait Implementations§
impl Freeze for DoubleCheckedLock
impl RefUnwindSafe for DoubleCheckedLock
impl Send for DoubleCheckedLock
impl Sync for DoubleCheckedLock
impl Unpin for DoubleCheckedLock
impl UnsafeUnpin for DoubleCheckedLock
impl UnwindSafe for DoubleCheckedLock
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