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 @@ -79,7 +79,7 @@ union Data<T, F> {
79
79
/// ```
80
80
#[ stable( feature = "lazy_cell" , since = "1.80.0" ) ]
81
81
pub struct LazyLock < T , F = fn ( ) -> T > {
82
- // FIXME(nonpoison_once): if possible, switch to nonpoison version once it is available
82
+ /// We use `poison::Once` here to enable the `force_mut` method.
83
83
once : Once ,
84
84
data : UnsafeCell < Data < T , F > > ,
85
85
}
Original file line number Diff line number Diff line change @@ -106,9 +106,10 @@ use crate::sync::Once;
106
106
/// ```
107
107
#[ stable( feature = "once_cell" , since = "1.70.0" ) ]
108
108
pub struct OnceLock < T > {
109
- // FIXME(nonpoison_once): switch to nonpoison version once it is available
109
+ /// We use `poison::Once` here to allow us to pseudo-"poison" the `Once` whenever a
110
+ /// `get_or_try_init` fails, which allows other calls to be run after a failure.
110
111
once : Once ,
111
- // Whether or not the value is initialized is tracked by `once.is_completed()` .
112
+ /// Note that `once.is_completed()` tells us if the value is initialized or not .
112
113
value : UnsafeCell < MaybeUninit < T > > ,
113
114
/// `PhantomData` to make sure dropck understands we're dropping T in our Drop impl.
114
115
///
You can’t perform that action at this time.
0 commit comments