File tree Expand file tree Collapse file tree 2 files changed +4
-3
lines changed Expand file tree Collapse file tree 2 files changed +4
-3
lines changed Original file line number Diff line number Diff line change @@ -63,7 +63,7 @@ union Data<T, F> {
6363/// ```
6464#[ stable( feature = "lazy_cell" , since = "1.80.0" ) ]
6565pub 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}
Original file line number Diff line number Diff line change @@ -104,9 +104,10 @@ use crate::sync::Once;
104104/// ```
105105#[ stable( feature = "once_cell" , since = "1.70.0" ) ]
106106pub 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 ///
You can’t perform that action at this time.
0 commit comments