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 |
#1147 in Concurrency
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 ofstd::error::Error
for theTryLockError
type. This feature is enabled by default. -
The
debug_lockcell
feature tracks the location of eachlock()
call in theLockCell
, allowing the developer to compare the first lock location in their file to the panicking lock location, aiding in debugging.