[Bilock::new()] provides two linked handles that share ownership of the same
guarded value. A lock is held by either a temporary [Guard] or an
[OwnedGuard], and the underlying value is released once both handles are
dropped.
The library employs spin loops to wait for the lock, so it is intended for short critical sections only.
use bilock::Bilock;
let (mut left, mut right) = Bilock::new(42);
let guard = left.lock();
assert_eq!(*guard, 42);
drop(guard);
let mut guard = right.lock();
*guard = 4711;
assert_eq!(*guard, 4711);This project is tri-licensed under ISC OR MIT OR Apache-2.0. Contributions must be licensed under the same terms. Users may follow any one of these licenses, or all of them.
See the individual license texts at