7 releases (breaking)

0.6.0 Jul 8, 2023
0.5.1 Jul 5, 2023
0.4.0 Jul 2, 2023
0.3.0 Jul 2, 2023
0.1.0 Jun 24, 2023

#1071 in Concurrency

0BSD license

29KB
403 lines

lock_cell

This crate provides the LockCell<T> and other supportings types.

A LockCell is a cell type which provides dynamic mutation using interior mutability. It is similar to RefCell<T>, except that it only allows a single borrow type (a lock). Locking a LockCell allows mutating its contents freely.

A LockCell can only be used in a single threaded context - it cannot be shared across different threads. Generally, a LockCell will be stored in a Rc<T> so that it can be shared.

Whether you use a LockCell or a RefCell depends on the structure and behavior of your program. Generally, if you have a lot of writers and readers, using a LockCell may be better, as it ensures that writers are less likely to be starved.

The Sync equivalent of a LockCell is Mutex<T>.

Features

  • The enable_std feature enables the standard library. This provides an implementation of std::error::Error for the TryLockError type. This feature is enabled by default.

  • The debug_lockcell feature tracks the location of each lock() call in the LockCell, allowing the developer to compare the first lock location in their file to the panicking lock location, aiding in debugging.

No runtime deps

Features