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> {
63
63
/// ```
64
64
#[ stable( feature = "lazy_cell" , since = "1.80.0" ) ]
65
65
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.
67
67
once : Once ,
68
68
data : UnsafeCell < Data < T , F > > ,
69
69
}
Original file line number Diff line number Diff line change @@ -104,9 +104,10 @@ use crate::sync::Once;
104
104
/// ```
105
105
#[ stable( feature = "once_cell" , since = "1.70.0" ) ]
106
106
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.
108
109
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 .
110
111
value : UnsafeCell < MaybeUninit < T > > ,
111
112
/// `PhantomData` to make sure dropck understands we're dropping T in our Drop impl.
112
113
///
You can’t perform that action at this time.
0 commit comments