This project follows Rust semantic versioning.
no_std
support forTCell
, contributed by Violet Leonard.Default
forTCell
,TLCell
andLCell
- Formalize MSRV of 1.60, and test
Hash
,Eq
andPartialEq
implementations for QCellOwnerID. These changes were contributed by Simon Ask and LegionMammal978
#[repr(transparent)]
added toLCell
,TCell
andTLCell
get_mut
andinto_inner
added to all cell types which better supports beginning/end-of-life of the cell
Troy Hinckley contributed to this point release.
LCellOwner
can now be created from a generativity guard, which makesLCellOwner
creation more convenient. This change was contributed by Troy Hinckley.
QCellOwner
is now based on IDs derived from the addresses of heap-allocated objects. This change was contributed by Violet Leonard. This offloads maintaining lists of in-use IDs to the allocator, which improvesno_std
compatibility.
-
no_std
support inQCell
andLCell
, contributed by Violet Leonard. -
QCellOwnerPinned
(contributed by Violet Leonard), andQCellOwnerSeq
. These now form a family of ID-based owners along withQCellOwner
.
QCellOwner::fast_new
is replaced byQCellOwnerSeq::new
- It is now no longer possible for a malicious coder to cheat the
singleton check in
TCellOwner
andTLCellOwner
by using covariant subtypes. Thanks to Frank Steffahn for noticing the bug, and for providing the PR to fix the issue.
- Check common traits using
static_assertions
?Sized
/ unsized types / DST support, e.g.QCell<dyn Trait>
cell.rw(owner)
andcell.ro(owner)
TCellOwner::try_new
andTCellOwner::wait_for_new
, contributed by Michiel De Muycnk
(internal changes)
Send
andSync
support, with full reasoning, thanks to a contribution from Michiel de Muycnk
TCell
andTLCell
are now split into separate types and the previous 'no-thread-local' feature has been removed
trybuild
testing of all compile_fail tests, to ensure that they're failing for the right reasons
TCell
is now thread-local-based by default, with a cargo feature to switch on old global behaviour
-
Switch from
get()
andget_mut()
toro()
andrw()
to access cell contents -
No longer require the owner to be specified when creating
TCell
andLCell
instances.
QCellOwnerID
for creating cells when the owner is not available
LCell
lifetime-based cell
- Make
QCellOwner::new()
completely safe. Old code that could be used maliciously to create undefined behaviour is moved toQCellOwner::fast_new()
and marked asunsafe
.
(first public release)