@@ -2882,25 +2882,21 @@ impl<T> Iterator for IntoIter<T> {
28822882
28832883 #[ inline]  
28842884 fn  next ( & mut  self )  -> Option < T >  { 
2885-  unsafe  { 
2886-  if  self . ptr  as  * const  _  == self . end  { 
2887-  None 
2888-  }  else  { 
2889-  if  mem:: size_of :: < T > ( )  == 0  { 
2890-  // purposefully don't use 'ptr.offset' because for 
2891-  // vectors with 0-size elements this would return the 
2892-  // same pointer. 
2893-  self . ptr  = arith_offset ( self . ptr  as  * const  i8 ,  1 )  as  * mut  T ; 
2894- 
2895-  // Make up a value of this ZST. 
2896-  Some ( mem:: zeroed ( ) ) 
2897-  }  else  { 
2898-  let  old = self . ptr ; 
2899-  self . ptr  = self . ptr . offset ( 1 ) ; 
2900- 
2901-  Some ( ptr:: read ( old) ) 
2902-  } 
2903-  } 
2885+  if  self . ptr  as  * const  _  == self . end  { 
2886+  None 
2887+  }  else  if  mem:: size_of :: < T > ( )  == 0  { 
2888+  // purposefully don't use 'ptr.offset' because for 
2889+  // vectors with 0-size elements this would return the 
2890+  // same pointer. 
2891+  self . ptr  = unsafe  {  arith_offset ( self . ptr  as  * const  i8 ,  1 )  as  * mut  T  } ; 
2892+ 
2893+  // Make up a value of this ZST. 
2894+  Some ( unsafe  {  mem:: zeroed ( )  } ) 
2895+  }  else  { 
2896+  let  old = self . ptr ; 
2897+  self . ptr  = unsafe  {  self . ptr . offset ( 1 )  } ; 
2898+ 
2899+  Some ( unsafe  {  ptr:: read ( old)  } ) 
29042900 } 
29052901 } 
29062902
@@ -2935,22 +2931,18 @@ impl<T> Iterator for IntoIter<T> {
29352931impl < T >  DoubleEndedIterator  for  IntoIter < T >  { 
29362932 #[ inline]  
29372933 fn  next_back ( & mut  self )  -> Option < T >  { 
2938-  unsafe  { 
2939-  if  self . end  == self . ptr  { 
2940-  None 
2941-  }  else  { 
2942-  if  mem:: size_of :: < T > ( )  == 0  { 
2943-  // See above for why 'ptr.offset' isn't used 
2944-  self . end  = arith_offset ( self . end  as  * const  i8 ,  -1 )  as  * mut  T ; 
2934+  if  self . end  == self . ptr  { 
2935+  None 
2936+  }  else  if  mem:: size_of :: < T > ( )  == 0  { 
2937+  // See above for why 'ptr.offset' isn't used 
2938+  self . end  = unsafe  {  arith_offset ( self . end  as  * const  i8 ,  -1 )  as  * mut  T  } ; 
29452939
2946-    // Make up a value of this ZST. 
2947-    Some ( mem:: zeroed ( ) ) 
2948-    }  else  { 
2949-    self . end  = self . end . offset ( -1 ) ; 
2940+  // Make up a value of this ZST. 
2941+  Some ( unsafe   {   mem:: zeroed ( )   } ) 
2942+  }  else  { 
2943+  self . end  = unsafe   {   self . end . offset ( -1 )   } ; 
29502944
2951-  Some ( ptr:: read ( self . end ) ) 
2952-  } 
2953-  } 
2945+  Some ( unsafe  {  ptr:: read ( self . end )  } ) 
29542946 } 
29552947 } 
29562948} 
0 commit comments