@@ -240,14 +240,7 @@ impl<'a, T: 'a> Iterator for Drain<'a,T> {
240240
241241    #[ inline]  
242242    fn  next ( & mut  self )  -> Option < T >  { 
243-         match  self . iter . next ( )  { 
244-             None  => None , 
245-             Some ( reference)  => { 
246-                 unsafe  { 
247-                     Some ( ptr:: read ( reference) ) 
248-                 } 
249-             } 
250-         } 
243+         self . iter . next ( ) . map ( |reference| unsafe  {  ptr:: read ( reference)  } ) 
251244    } 
252245
253246    #[ inline]  
@@ -259,14 +252,7 @@ impl<'a, T: 'a> Iterator for Drain<'a,T> {
259252impl < ' a ,  T :  ' a >  DoubleEndedIterator  for  Drain < ' a ,  T >  { 
260253    #[ inline]  
261254    fn  next_back ( & mut  self )  -> Option < T >  { 
262-         match  self . iter . next_back ( )  { 
263-             None  => None , 
264-             Some ( reference)  => { 
265-                 unsafe  { 
266-                     Some ( ptr:: read ( reference) ) 
267-                 } 
268-             } 
269-         } 
255+         self . iter . next_back ( ) . map ( |reference| unsafe  {  ptr:: read ( reference)  } ) 
270256    } 
271257} 
272258
@@ -602,26 +588,26 @@ impl<A: Array> SmallVec<A> {
602588pub  fn  grow ( & mut  self ,  new_cap :  usize )  { 
603589        unsafe  { 
604590            let  ( ptr,  & mut  len,  cap)  = self . triple_mut ( ) ; 
605-             let  spilled  = self . spilled ( ) ; 
591+             let  unspilled  = ! self . spilled ( ) ; 
606592            assert ! ( new_cap >= len) ; 
607593            if  new_cap <= self . inline_size ( )  { 
608-                 if  !spilled  { 
594+                 if  unspilled  { 
609595                    return ; 
610596                } 
611597                self . data  = SmallVecData :: from_inline ( mem:: uninitialized ( ) ) ; 
612598                ptr:: copy_nonoverlapping ( ptr,  self . data . inline_mut ( ) . ptr_mut ( ) ,  len) ; 
613-                 deallocate ( ptr,  cap) ; 
614599            }  else  if  new_cap != cap { 
615600                let  mut  vec = Vec :: with_capacity ( new_cap) ; 
616601                let  new_alloc = vec. as_mut_ptr ( ) ; 
617602                mem:: forget ( vec) ; 
618603                ptr:: copy_nonoverlapping ( ptr,  new_alloc,  len) ; 
619604                self . data  = SmallVecData :: from_heap ( new_alloc,  len) ; 
620605                self . capacity  = new_cap; 
621-                 if  spilled  { 
622-                     deallocate ( ptr ,  cap ) ; 
606+                 if  unspilled  { 
607+                     return ; 
623608                } 
624609            } 
610+             deallocate ( ptr,  cap) ; 
625611        } 
626612    } 
627613
0 commit comments