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 forgeting clones in a loop.