@@ -703,7 +703,7 @@ pub trait RandomAccessIterator<A>: Iterator<A> {
703703 fn indexable ( & self ) -> uint ;
704704
705705 /// Return an element at an index
706- fn idx ( & self , index : uint ) -> Option < A > ;
706+ fn idx ( & mut self , index : uint ) -> Option < A > ;
707707}
708708
709709/// An iterator that knows its exact length
@@ -771,8 +771,9 @@ impl<A, T: DoubleEndedIterator<A> + RandomAccessIterator<A>> RandomAccessIterato
771771 #[ inline]
772772 fn indexable ( & self ) -> uint { self . iter . indexable ( ) }
773773 #[ inline]
774- fn idx ( & self , index : uint ) -> Option < A > {
775- self . iter . idx ( self . indexable ( ) - index - 1 )
774+ fn idx ( & mut self , index : uint ) -> Option < A > {
775+ let amt = self . indexable ( ) ;
776+ self . iter . idx ( amt - index - 1 )
776777 }
777778}
778779
@@ -1071,7 +1072,7 @@ impl<A, T: Clone + RandomAccessIterator<A>> RandomAccessIterator<A> for Cycle<T>
10711072 }
10721073
10731074 #[ inline]
1074- fn idx ( & self , index : uint ) -> Option < A > {
1075+ fn idx ( & mut self , index : uint ) -> Option < A > {
10751076 let liter = self . iter . indexable ( ) ;
10761077 let lorig = self . orig . indexable ( ) ;
10771078 if lorig == 0 {
@@ -1143,7 +1144,7 @@ for Chain<T, U> {
11431144 }
11441145
11451146 #[ inline]
1146- fn idx ( & self , index : uint ) -> Option < A > {
1147+ fn idx ( & mut self , index : uint ) -> Option < A > {
11471148 let len = self . a . indexable ( ) ;
11481149 if index < len {
11491150 self . a . idx ( index)
@@ -1221,7 +1222,7 @@ RandomAccessIterator<(A, B)> for Zip<T, U> {
12211222 }
12221223
12231224 #[ inline]
1224- fn idx ( & self , index : uint ) -> Option < ( A , B ) > {
1225+ fn idx ( & mut self , index : uint ) -> Option < ( A , B ) > {
12251226 match self . a . idx ( index) {
12261227 None => None ,
12271228 Some ( x) => match self . b . idx ( index) {
@@ -1276,8 +1277,9 @@ impl<'a, A, B, T: RandomAccessIterator<A>> RandomAccessIterator<B> for Map<'a, A
12761277 }
12771278
12781279 #[ inline]
1279- fn idx ( & self , index : uint ) -> Option < B > {
1280- self . do_map ( self . iter . idx ( index) )
1280+ fn idx ( & mut self , index : uint ) -> Option < B > {
1281+ let elt = self . iter . idx ( index) ;
1282+ self . do_map ( elt)
12811283 }
12821284}
12831285
@@ -1415,7 +1417,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<(uint, A)> for Enumerat
14151417 }
14161418
14171419 #[ inline]
1418- fn idx ( & self , index : uint ) -> Option < ( uint , A ) > {
1420+ fn idx ( & mut self , index : uint ) -> Option < ( uint , A ) > {
14191421 match self . iter . idx ( index) {
14201422 Some ( a) => Some ( ( self . count + index, a) ) ,
14211423 _ => None ,
@@ -1600,7 +1602,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<A> for Skip<T> {
16001602 }
16011603
16021604 #[ inline]
1603- fn idx ( & self , index : uint ) -> Option < A > {
1605+ fn idx ( & mut self , index : uint ) -> Option < A > {
16041606 if index >= self . indexable ( ) {
16051607 None
16061608 } else {
@@ -1649,7 +1651,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<A> for Take<T> {
16491651 }
16501652
16511653 #[ inline]
1652- fn idx ( & self , index : uint ) -> Option < A > {
1654+ fn idx ( & mut self , index : uint ) -> Option < A > {
16531655 if index >= self . n {
16541656 None
16551657 } else {
@@ -1799,7 +1801,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<A> for Fuse<T> {
17991801 }
18001802
18011803 #[ inline]
1802- fn idx ( & self , index : uint ) -> Option < A > {
1804+ fn idx ( & mut self , index : uint ) -> Option < A > {
18031805 self . iter . idx ( index)
18041806 }
18051807}
@@ -1862,8 +1864,9 @@ for Inspect<'a, A, T> {
18621864 }
18631865
18641866 #[ inline]
1865- fn idx ( & self , index : uint ) -> Option < A > {
1866- self . do_inspect ( self . iter . idx ( index) )
1867+ fn idx ( & mut self , index : uint ) -> Option < A > {
1868+ let element = self . iter . idx ( index) ;
1869+ self . do_inspect ( element)
18671870 }
18681871}
18691872
@@ -2164,7 +2167,7 @@ impl<A: Clone> RandomAccessIterator<A> for Repeat<A> {
21642167 #[ inline]
21652168 fn indexable ( & self ) -> uint { uint:: MAX }
21662169 #[ inline]
2167- fn idx ( & self , _: uint ) -> Option < A > { Some ( self . element . clone ( ) ) }
2170+ fn idx ( & mut self , _: uint ) -> Option < A > { Some ( self . element . clone ( ) ) }
21682171}
21692172
21702173/// Functions for lexicographical ordering of sequences.
0 commit comments