Struct bones_lib::ecs::atomic::borrow::AtomicBorrow
pub struct AtomicBorrow<'a> { /* private fields */ }
Expand description
Encapsulates shared borrowing state.
An instance of this type guarantees that AtomicBorrowMut
cannot be constructed for the same lock.
Implementations§
§impl<'a> AtomicBorrow<'a>
impl<'a> AtomicBorrow<'a>
pub fn try_new(lock: &'a AtomicIsize) -> Option<AtomicBorrow<'a>>
pub fn try_new(lock: &'a AtomicIsize) -> Option<AtomicBorrow<'a>>
Attempts to borrow lock immutably.
Fails if Lock
contains a value for which is_writing
returns true.
On success Lock
contains value for which is_reading
returns true.
pub unsafe fn restore_leaked(lock: &'a AtomicIsize) -> AtomicBorrow<'a>
pub unsafe fn restore_leaked(lock: &'a AtomicIsize) -> AtomicBorrow<'a>
Restore previously leaked AtomicBorrow
instance.
This method should be called only after forgetting AtomicBorrow
instance.
Or after locking manually using try_borrow
method.
pub fn dummy() -> AtomicBorrow<'a>
pub fn dummy() -> AtomicBorrow<'a>
Returns dummy atomic borrow that doesn’t actually locks anything.
It is used within Ref::new
method that take external reference.
pub fn clone(&self) -> AtomicBorrow<'a>
pub fn clone(&self) -> AtomicBorrow<'a>
Borrows can be cloned.
There is a hard limit on number of clones for each lock (except dummy lock) and it will panic if cloning fails.
Huge limit value makes it practically unreachable without forget
ing clones in a loop.