1- use super :: poison :: once:: ExclusiveState ;
1+ use super :: once:: OnceExclusiveState ;
22use crate :: cell:: UnsafeCell ;
33use crate :: mem:: ManuallyDrop ;
44use crate :: ops:: { Deref , DerefMut } ;
@@ -140,14 +140,18 @@ impl<T, F: FnOnce() -> T> LazyLock<T, F> {
140140 pub fn into_inner ( mut this : Self ) -> Result < T , F > {
141141 let state = this. once . state ( ) ;
142142 match state {
143- ExclusiveState :: Poisoned => panic_poisoned ( ) ,
143+ OnceExclusiveState :: Poisoned => panic_poisoned ( ) ,
144144 state => {
145145 let this = ManuallyDrop :: new ( this) ;
146146 let data = unsafe { ptr:: read ( & this. data ) } . into_inner ( ) ;
147147 match state {
148- ExclusiveState :: Incomplete => Err ( ManuallyDrop :: into_inner ( unsafe { data. f } ) ) ,
149- ExclusiveState :: Complete => Ok ( ManuallyDrop :: into_inner ( unsafe { data. value } ) ) ,
150- ExclusiveState :: Poisoned => unreachable ! ( ) ,
148+ OnceExclusiveState :: Incomplete => {
149+ Err ( ManuallyDrop :: into_inner ( unsafe { data. f } ) )
150+ }
151+ OnceExclusiveState :: Complete => {
152+ Ok ( ManuallyDrop :: into_inner ( unsafe { data. value } ) )
153+ }
154+ OnceExclusiveState :: Poisoned => unreachable ! ( ) ,
151155 }
152156 }
153157 }
@@ -189,7 +193,7 @@ impl<T, F: FnOnce() -> T> LazyLock<T, F> {
189193 impl < T , F > Drop for PoisonOnPanic < ' _ , T , F > {
190194 #[ inline]
191195 fn drop ( & mut self ) {
192- self . 0 . once . set_state ( ExclusiveState :: Poisoned ) ;
196+ self . 0 . once . set_state ( OnceExclusiveState :: Poisoned ) ;
193197 }
194198 }
195199
@@ -200,19 +204,19 @@ impl<T, F: FnOnce() -> T> LazyLock<T, F> {
200204 let guard = PoisonOnPanic ( this) ;
201205 let data = f ( ) ;
202206 guard. 0 . data . get_mut ( ) . value = ManuallyDrop :: new ( data) ;
203- guard. 0 . once . set_state ( ExclusiveState :: Complete ) ;
207+ guard. 0 . once . set_state ( OnceExclusiveState :: Complete ) ;
204208 core:: mem:: forget ( guard) ;
205209 // SAFETY: We put the value there above.
206210 unsafe { & mut this. data . get_mut ( ) . value }
207211 }
208212
209213 let state = this. once . state ( ) ;
210214 match state {
211- ExclusiveState :: Poisoned => panic_poisoned ( ) ,
215+ OnceExclusiveState :: Poisoned => panic_poisoned ( ) ,
212216 // SAFETY: The `Once` states we completed the initialization.
213- ExclusiveState :: Complete => unsafe { & mut this. data . get_mut ( ) . value } ,
217+ OnceExclusiveState :: Complete => unsafe { & mut this. data . get_mut ( ) . value } ,
214218 // SAFETY: The state is `Incomplete`.
215- ExclusiveState :: Incomplete => unsafe { really_init_mut ( this) } ,
219+ OnceExclusiveState :: Incomplete => unsafe { really_init_mut ( this) } ,
216220 }
217221 }
218222
@@ -293,7 +297,7 @@ impl<T, F> LazyLock<T, F> {
293297 match state {
294298 // SAFETY:
295299 // The closure has been run successfully, so `value` has been initialized.
296- ExclusiveState :: Complete => Some ( unsafe { & mut this. data . get_mut ( ) . value } ) ,
300+ OnceExclusiveState :: Complete => Some ( unsafe { & mut this. data . get_mut ( ) . value } ) ,
297301 _ => None ,
298302 }
299303 }
@@ -332,11 +336,13 @@ impl<T, F> LazyLock<T, F> {
332336impl < T , F > Drop for LazyLock < T , F > {
333337 fn drop ( & mut self ) {
334338 match self . once . state ( ) {
335- ExclusiveState :: Incomplete => unsafe { ManuallyDrop :: drop ( & mut self . data . get_mut ( ) . f ) } ,
336- ExclusiveState :: Complete => unsafe {
339+ OnceExclusiveState :: Incomplete => unsafe {
340+ ManuallyDrop :: drop ( & mut self . data . get_mut ( ) . f )
341+ } ,
342+ OnceExclusiveState :: Complete => unsafe {
337343 ManuallyDrop :: drop ( & mut self . data . get_mut ( ) . value )
338344 } ,
339- ExclusiveState :: Poisoned => { }
345+ OnceExclusiveState :: Poisoned => { }
340346 }
341347 }
342348}
0 commit comments