Skip to content

Commit b201b42

Browse files
committed
remove FIXMEs in once_lock and lazy_lock
Both implementations require poisoning support.
1 parent 94588d9 commit b201b42

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

library/std/src/sync/lazy_lock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ union Data<T, F> {
6363
/// ```
6464
#[stable(feature = "lazy_cell", since = "1.80.0")]
6565
pub struct LazyLock<T, F = fn() -> T> {
66-
// FIXME(nonpoison_once): if possible, switch to nonpoison version once it is available
66+
/// We use `poison::Once` here to enable the `force_mut` method.
6767
once: Once,
6868
data: UnsafeCell<Data<T, F>>,
6969
}

library/std/src/sync/once_lock.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,10 @@ use crate::sync::Once;
104104
/// ```
105105
#[stable(feature = "once_cell", since = "1.70.0")]
106106
pub struct OnceLock<T> {
107-
// FIXME(nonpoison_once): switch to nonpoison version once it is available
107+
/// We use `poison::Once` here to allow us to pseudo-"poison" the `Once` whenever a
108+
/// `get_or_try_init` fails, which allows other calls to be run after a failure.
108109
once: Once,
109-
// Whether or not the value is initialized is tracked by `once.is_completed()`.
110+
/// Note that `once.is_completed()` tells us if the value is initialized or not.
110111
value: UnsafeCell<MaybeUninit<T>>,
111112
/// `PhantomData` to make sure dropck understands we're dropping T in our Drop impl.
112113
///

0 commit comments

Comments
 (0)