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