Crates.io | readlock |
lib.rs | readlock |
version | 0.1.7 |
source | src |
created_at | 2023-02-18 23:39:50.283685 |
updated_at | 2024-07-13 20:45:31.77486 |
description | A weird alternative to Arc |
homepage | |
repository | https://github.com/jplatte/readlock |
max_upload_size | |
id | 788551 |
size | 18,333 |
(Shared) Read-Only Lock: A thing that can be useful when you don't really want shared mutability, you just want to mutate a value from one place and read it from many others.
This library provides three types:
Shared<T>
: similar to Arc<RwLock<T>>
, but you can only create
SharedReadLock<T>
s and WeakReadLock<T>
s from it that share access to the
same inner value, not further Shared<T>
s. Also, acquiring a write lock
requires unique ownership / borrowing (&mut self
). However: Reading requires
no locking because mutably borrowing the Shared
means that no other thread
can be mutating the value at the same time (all other reference to the value
are read-only).SharedReadLock<T>
: like a Arc<RwLock<T>>
that is only ever used for
reading. Can be downgraded to WeakReadLock
.WeakReadLock<T>
: like a Weak<RwLock<T>>
. That is, it references the same
memory, but if the original Shared
and any derived SharedReadLock
s to that
value are dropped, it will be deallocated regardless of any WeakReadLock
s.
Must be upgraded into SharedReadLock
to access the inner value.