@@ -1383,10 +1383,8 @@ pub trait OwnedVector<T> {
13831383 fn push_all_move ( & mut self , rhs : ~[ T ] ) ;
13841384 /// Remove the last element from a vector and return it, or `None` if it is empty
13851385 fn pop ( & mut self ) -> Option < T > ;
1386- /// Removes the first element from a vector and return it
1387- fn shift ( & mut self ) -> T ;
13881386 /// Removes the first element from a vector and return it, or `None` if it is empty
1389- fn shift_opt ( & mut self ) -> Option < T > ;
1387+ fn shift ( & mut self ) -> Option < T > ;
13901388 /// Prepend an element to the vector
13911389 fn unshift ( & mut self , x : T ) ;
13921390
@@ -1578,14 +1576,11 @@ impl<T> OwnedVector<T> for ~[T] {
15781576
15791577
15801578 #[ inline]
1581- fn shift ( & mut self ) -> T {
1582- self . shift_opt ( ) . expect ( "shift: empty vector" )
1583- }
1584-
1585- fn shift_opt ( & mut self ) -> Option < T > {
1579+ fn shift ( & mut self ) -> Option < T > {
15861580 self . remove_opt ( 0 )
15871581 }
15881582
1583+ #[ inline]
15891584 fn unshift ( & mut self , x : T ) {
15901585 self . insert ( 0 , x)
15911586 }
@@ -1645,7 +1640,7 @@ impl<T> OwnedVector<T> for ~[T] {
16451640 if index < ln - 1 {
16461641 self . swap ( index, ln - 1 ) ;
16471642 }
1648- self . pop ( )
1643+ self . pop ( ) . unwrap ( )
16491644 }
16501645 fn truncate ( & mut self , newlen : uint ) {
16511646 let oldlen = self . len ( ) ;
@@ -3580,21 +3575,11 @@ mod tests {
35803575 #[ test]
35813576 fn test_shift ( ) {
35823577 let mut x = ~[ 1 , 2 , 3 ] ;
3583- assert_eq ! ( x. shift( ) , 1 ) ;
3584- assert_eq ! ( & x, & ~[ 2 , 3 ] ) ;
3585- assert_eq ! ( x. shift( ) , 2 ) ;
3586- assert_eq ! ( x. shift( ) , 3 ) ;
3587- assert_eq ! ( x. len( ) , 0 ) ;
3588- }
3589-
3590- #[ test]
3591- fn test_shift_opt ( ) {
3592- let mut x = ~[ 1 , 2 , 3 ] ;
3593- assert_eq ! ( x. shift_opt( ) , Some ( 1 ) ) ;
3578+ assert_eq ! ( x. shift( ) , Some ( 1 ) ) ;
35943579 assert_eq ! ( & x, & ~[ 2 , 3 ] ) ;
3595- assert_eq ! ( x. shift_opt ( ) , Some ( 2 ) ) ;
3596- assert_eq ! ( x. shift_opt ( ) , Some ( 3 ) ) ;
3597- assert_eq ! ( x. shift_opt ( ) , None ) ;
3580+ assert_eq ! ( x. shift ( ) , Some ( 2 ) ) ;
3581+ assert_eq ! ( x. shift ( ) , Some ( 3 ) ) ;
3582+ assert_eq ! ( x. shift ( ) , None ) ;
35983583 assert_eq ! ( x. len( ) , 0 ) ;
35993584 }
36003585
0 commit comments