Changelog
1.9
- Added an
atomic-polyfill
optional dependency to compile race
on platforms without atomics
1.8.0
- Add
try_insert
API -- a version of set
that returns a reference.
1.7.2
- Improve code size when using parking_lot feature.
1.7.1
- Fix
race::OnceBox<T>
to also impl Default
even if T
doesn't impl Default
.
1.7.0
- Hide the
race
module behind (default) race
feature. Turns out that adding race
by default was a breaking change on some platforms without atomics. In this release, we make the module opt-out. Technically, this is a breaking change for those who use race
with no_default_features
. Given that the race
module itself only several days old, the breakage is deemed acceptable.
1.6.0
- Add
Lazy::into_value
- Stabilize
once_cell::race
module for “first one wins” no_std-compatible initialization flavor. - Migrate from deprecated
compare_and_swap
to compare_exchange
.
1.5.2
OnceBox
API uses Box<T>
. This a breaking change to unstable API.
1.5.1
- MSRV is increased to
1.36.0
. - document
once_cell::race
module. - introduce
alloc
feature for OnceBox
. - fix
OnceBox::set
.
1.5.0
- add new
once_cell::race
module for “first one wins” no_std-compatible initialization flavor. The API is provisional, subject to change and is gated by the unstable
cargo feature.
1.4.1
1.4.0
- upgrade
parking_lot
to 0.10
(note that this bumps MSRV with parking_lot
feature enabled to 1.36.0
). - add
OnceCell::take
. - upgrade crossbeam utils (private dependency) to
0.7
.
1.3.1
- remove unnecessary
F: fmt::Debug
bound from impl fmt::Debug for Lazy<T, F>
.
1.3.0
Lazy<T>
now implements DerefMut
.- update implementation according to the latest changes in
std
.
1.2.0
- add
sync::OnceCell::get_unchecked
.
1.1.0
- implement
Default
for Lazy
: it creates an empty Lazy<T>
which is initialized with T::default
on first access. - add
OnceCell::get_mut
.
1.0.2
- actually add
#![no_std]
attribute if std feature is not enabled.
1.0.1
- fix unsoundness in
Lazy<T>
if the initializing function panics. Thanks @xfix! - implement
RefUnwindSafe
for Lazy
. - share more code between
std
and parking_lot
implementations. - add F.A.Q section to the docs.
1.0.0
- remove
parking_lot
from the list of default features. - add
std
default feature. Without std
, only unsync
module is supported. - implement
Eq
for OnceCell
. - fix wrong
Sync
bound on sync::Lazy
. - run the whole test suite with miri.
0.2.7
- New implementation of
sync::OnceCell
if parking_lot
feature is disabled. It now employs a hand-rolled variant of std::sync::Once
. sync::OnceCell::get_or_try_init
works without parking_lot
as well!- document the effects of
parking_lot
feature: same performance but smaller types.
0.2.6
- Updated
Lazy
's Deref
impl to requires only FnOnce
instead of Fn
0.2.5
Lazy
requires only FnOnce
instead of Fn
0.2.4
- nicer
fmt::Debug
implementation
0.2.3
- update
parking_lot
to 0.9.0
- fix stacked borrows violation in
unsync::OnceCell::get
- implement
Clone
for sync::OnceCell<T> where T: Clone
0.2.2
- add
OnceCell::into_inner
which consumes a cell and returns an option
0.2.1
- implement
sync::OnceCell::get_or_try_init
if parking_lot
feature is enabled - switch internal
unsafe
implementation of sync::OnceCell
from Once
to Mutex
sync::OnceCell::get_or_init
is twice as fast if cell is already initialized- implement
std::panic::RefUnwindSafe
and std::panic::UnwindSafe
for OnceCell
- better document behavior around panics
0.2.0
- MSRV is now 1.31.1
Lazy::new
and OnceCell::new
are now const-fnsunsync_lazy
and sync_lazy
macros are removed
0.1.8
- update crossbeam-utils to 0.6
- enable bors-ng
0.1.7
- cells implement
PartialEq
and From
- MSRV is down to 1.24.1
- update
parking_lot
to 0.7.1
0.1.6
unsync::OnceCell<T>
is Clone
if T
is Clone
.
0.1.5
- No changelog until this point :(