4646//! These traits include `ImmutableSlice`, which is defined for `&[T]` types,
4747//! and `MutableSlice`, defined for `&mut [T]` types.
4848//!
49- //! An example is the `slice` method which enables slicing syntax `[a..b]` that
50- //! returns an immutable "view" into a `Vec` or another slice from the index
51- //! interval `[a, b)`:
49+ //! An example is the method `.slice(a, b)` that returns an immutable "view" into
50+ //! a `Vec` or another slice from the index interval `[a, b)`:
5251//!
5352//! ```rust
5453//! let numbers = [0i, 1i, 2i];
55- //! let last_numbers = numbers[1..3] ;
54+ //! let last_numbers = numbers.slice(1, 3) ;
5655//! // last_numbers is now &[1i, 2i]
5756//! ```
5857//!
@@ -611,7 +610,7 @@ impl<'a,T> MutableSliceAllocating<'a, T> for &'a mut [T] {
611610
612611 #[ inline]
613612 fn move_from ( self , mut src : Vec < T > , start : uint , end : uint ) -> uint {
614- for ( a, b) in self . iter_mut ( ) . zip ( src[ mut start.. end] . iter_mut ( ) ) {
613+ for ( a, b) in self . iter_mut ( ) . zip ( src. slice_mut ( start , end) . iter_mut ( ) ) {
615614 mem:: swap ( a, b) ;
616615 }
617616 cmp:: min ( self . len ( ) , end-start)
@@ -703,7 +702,7 @@ impl<'a, T: Ord> MutableOrdSlice<T> for &'a mut [T] {
703702 self . swap ( j, i-1 ) ;
704703
705704 // Step 4: Reverse the (previously) weakly decreasing part
706- self [ mut i.. ] . reverse ( ) ;
705+ self . slice_from_mut ( i ) . reverse ( ) ;
707706
708707 true
709708 }
@@ -724,7 +723,7 @@ impl<'a, T: Ord> MutableOrdSlice<T> for &'a mut [T] {
724723 }
725724
726725 // Step 2: Reverse the weakly increasing part
727- self [ mut i.. ] . reverse ( ) ;
726+ self . slice_from_mut ( i ) . reverse ( ) ;
728727
729728 // Step 3: Find the rightmost element equal to or bigger than the pivot (i-1)
730729 let mut j = self . len ( ) - 1 ;
@@ -991,24 +990,24 @@ mod tests {
991990 fn test_slice ( ) {
992991 // Test fixed length vector.
993992 let vec_fixed = [ 1 i, 2 , 3 , 4 ] ;
994- let v_a = vec_fixed[ 1 u.. vec_fixed. len ( ) ] . to_vec ( ) ;
993+ let v_a = vec_fixed. slice ( 1 u , vec_fixed. len ( ) ) . to_vec ( ) ;
995994 assert_eq ! ( v_a. len( ) , 3 u) ;
996995 let v_a = v_a. as_slice ( ) ;
997996 assert_eq ! ( v_a[ 0 ] , 2 ) ;
998997 assert_eq ! ( v_a[ 1 ] , 3 ) ;
999998 assert_eq ! ( v_a[ 2 ] , 4 ) ;
1000999
10011000 // Test on stack.
1002- let vec_stack: & [ _ ] = & [ 1 i, 2 , 3 ] ;
1003- let v_b = vec_stack[ 1 u.. 3 u ] . to_vec ( ) ;
1001+ let vec_stack = & [ 1 i, 2 , 3 ] ;
1002+ let v_b = vec_stack. slice ( 1 u , 3 u ) . to_vec ( ) ;
10041003 assert_eq ! ( v_b. len( ) , 2 u) ;
10051004 let v_b = v_b. as_slice ( ) ;
10061005 assert_eq ! ( v_b[ 0 ] , 2 ) ;
10071006 assert_eq ! ( v_b[ 1 ] , 3 ) ;
10081007
10091008 // Test `Box<[T]>`
10101009 let vec_unique = vec ! [ 1 i, 2 , 3 , 4 , 5 , 6 ] ;
1011- let v_d = vec_unique[ 1 u.. 6 u ] . to_vec ( ) ;
1010+ let v_d = vec_unique. slice ( 1 u , 6 u ) . to_vec ( ) ;
10121011 assert_eq ! ( v_d. len( ) , 5 u) ;
10131012 let v_d = v_d. as_slice ( ) ;
10141013 assert_eq ! ( v_d[ 0 ] , 2 ) ;
@@ -1021,21 +1020,21 @@ mod tests {
10211020 #[ test]
10221021 fn test_slice_from ( ) {
10231022 let vec: & [ int ] = & [ 1 , 2 , 3 , 4 ] ;
1024- assert_eq ! ( vec[ 0 .. ] , vec) ;
1023+ assert_eq ! ( vec. slice_from ( 0 ) , vec) ;
10251024 let b: & [ int ] = & [ 3 , 4 ] ;
1026- assert_eq ! ( vec[ 2 .. ] , b) ;
1025+ assert_eq ! ( vec. slice_from ( 2 ) , b) ;
10271026 let b: & [ int ] = & [ ] ;
1028- assert_eq ! ( vec[ 4 .. ] , b) ;
1027+ assert_eq ! ( vec. slice_from ( 4 ) , b) ;
10291028 }
10301029
10311030 #[ test]
10321031 fn test_slice_to ( ) {
10331032 let vec: & [ int ] = & [ 1 , 2 , 3 , 4 ] ;
1034- assert_eq ! ( vec[ .. 4 ] , vec) ;
1033+ assert_eq ! ( vec. slice_to ( 4 ) , vec) ;
10351034 let b: & [ int ] = & [ 1 , 2 ] ;
1036- assert_eq ! ( vec[ .. 2 ] , b) ;
1035+ assert_eq ! ( vec. slice_to ( 2 ) , b) ;
10371036 let b: & [ int ] = & [ ] ;
1038- assert_eq ! ( vec[ .. 0 ] , b) ;
1037+ assert_eq ! ( vec. slice_to ( 0 ) , b) ;
10391038 }
10401039
10411040
@@ -1976,7 +1975,7 @@ mod tests {
19761975 assert ! ( a == [ 7 i, 2 , 3 , 4 ] ) ;
19771976 let mut a = [ 1 i, 2 , 3 , 4 , 5 ] ;
19781977 let b = vec ! [ 5 i, 6 , 7 , 8 , 9 , 0 ] ;
1979- assert_eq ! ( a[ mut 2 .. 4 ] . move_from( b, 1 , 6 ) , 2 ) ;
1978+ assert_eq ! ( a. slice_mut ( 2 , 4 ) . move_from( b, 1 , 6 ) , 2 ) ;
19801979 assert ! ( a == [ 1 i, 2 , 6 , 7 , 5 ] ) ;
19811980 }
19821981
@@ -1996,7 +1995,7 @@ mod tests {
19961995 #[ test]
19971996 fn test_reverse_part ( ) {
19981997 let mut values = [ 1 i, 2 , 3 , 4 , 5 ] ;
1999- values[ mut 1 .. 4 ] . reverse ( ) ;
1998+ values. slice_mut ( 1 , 4 ) . reverse ( ) ;
20001999 assert ! ( values == [ 1 , 4 , 3 , 2 , 5 ] ) ;
20012000 }
20022001
@@ -2043,9 +2042,9 @@ mod tests {
20432042 fn test_bytes_set_memory ( ) {
20442043 use slice:: bytes:: MutableByteVector ;
20452044 let mut values = [ 1u8 , 2 , 3 , 4 , 5 ] ;
2046- values[ mut 0 .. 5 ] . set_memory ( 0xAB ) ;
2045+ values. slice_mut ( 0 , 5 ) . set_memory ( 0xAB ) ;
20472046 assert ! ( values == [ 0xAB , 0xAB , 0xAB , 0xAB , 0xAB ] ) ;
2048- values[ mut 2 .. 4 ] . set_memory ( 0xFF ) ;
2047+ values. slice_mut ( 2 , 4 ) . set_memory ( 0xFF ) ;
20492048 assert ! ( values == [ 0xAB , 0xAB , 0xFF , 0xFF , 0xAB ] ) ;
20502049 }
20512050
@@ -2071,18 +2070,12 @@ mod tests {
20712070 let mut values = [ 1u8 , 2 , 3 , 4 , 5 ] ;
20722071 {
20732072 let ( left, right) = values. split_at_mut ( 2 ) ;
2074- {
2075- let left: & [ _ ] = left;
2076- assert ! ( left[ 0 ..left. len( ) ] == [ 1 , 2 ] ) ;
2077- }
2073+ assert ! ( left. slice( 0 , left. len( ) ) == [ 1 , 2 ] ) ;
20782074 for p in left. iter_mut ( ) {
20792075 * p += 1 ;
20802076 }
20812077
2082- {
2083- let right: & [ _ ] = right;
2084- assert ! ( right[ 0 ..right. len( ) ] == [ 3 , 4 , 5 ] ) ;
2085- }
2078+ assert ! ( right. slice( 0 , right. len( ) ) == [ 3 , 4 , 5 ] ) ;
20862079 for p in right. iter_mut ( ) {
20872080 * p += 2 ;
20882081 }
@@ -2106,7 +2099,7 @@ mod tests {
21062099 }
21072100 assert_eq ! ( cnt, 3 ) ;
21082101
2109- for f in v[ 1 .. 3 ] . iter ( ) {
2102+ for f in v. slice ( 1 , 3 ) . iter ( ) {
21102103 assert ! ( * f == Foo ) ;
21112104 cnt += 1 ;
21122105 }
0 commit comments