@@ -703,7 +703,7 @@ pub trait RandomAccessIterator<A>: Iterator<A> {
703
703
fn indexable ( & self ) -> uint ;
704
704
705
705
/// Return an element at an index
706
- fn idx ( & self , index : uint ) -> Option < A > ;
706
+ fn idx ( & mut self , index : uint ) -> Option < A > ;
707
707
}
708
708
709
709
/// An iterator that knows its exact length
@@ -771,8 +771,9 @@ impl<A, T: DoubleEndedIterator<A> + RandomAccessIterator<A>> RandomAccessIterato
771
771
#[ inline]
772
772
fn indexable ( & self ) -> uint { self . iter . indexable ( ) }
773
773
#[ 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 )
776
777
}
777
778
}
778
779
@@ -1071,7 +1072,7 @@ impl<A, T: Clone + RandomAccessIterator<A>> RandomAccessIterator<A> for Cycle<T>
1071
1072
}
1072
1073
1073
1074
#[ inline]
1074
- fn idx ( & self , index : uint ) -> Option < A > {
1075
+ fn idx ( & mut self , index : uint ) -> Option < A > {
1075
1076
let liter = self . iter . indexable ( ) ;
1076
1077
let lorig = self . orig . indexable ( ) ;
1077
1078
if lorig == 0 {
@@ -1143,7 +1144,7 @@ for Chain<T, U> {
1143
1144
}
1144
1145
1145
1146
#[ inline]
1146
- fn idx ( & self , index : uint ) -> Option < A > {
1147
+ fn idx ( & mut self , index : uint ) -> Option < A > {
1147
1148
let len = self . a . indexable ( ) ;
1148
1149
if index < len {
1149
1150
self . a . idx ( index)
@@ -1221,7 +1222,7 @@ RandomAccessIterator<(A, B)> for Zip<T, U> {
1221
1222
}
1222
1223
1223
1224
#[ inline]
1224
- fn idx ( & self , index : uint ) -> Option < ( A , B ) > {
1225
+ fn idx ( & mut self , index : uint ) -> Option < ( A , B ) > {
1225
1226
match self . a . idx ( index) {
1226
1227
None => None ,
1227
1228
Some ( x) => match self . b . idx ( index) {
@@ -1276,8 +1277,9 @@ impl<'a, A, B, T: RandomAccessIterator<A>> RandomAccessIterator<B> for Map<'a, A
1276
1277
}
1277
1278
1278
1279
#[ 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)
1281
1283
}
1282
1284
}
1283
1285
@@ -1415,7 +1417,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<(uint, A)> for Enumerat
1415
1417
}
1416
1418
1417
1419
#[ inline]
1418
- fn idx ( & self , index : uint ) -> Option < ( uint , A ) > {
1420
+ fn idx ( & mut self , index : uint ) -> Option < ( uint , A ) > {
1419
1421
match self . iter . idx ( index) {
1420
1422
Some ( a) => Some ( ( self . count + index, a) ) ,
1421
1423
_ => None ,
@@ -1600,7 +1602,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<A> for Skip<T> {
1600
1602
}
1601
1603
1602
1604
#[ inline]
1603
- fn idx ( & self , index : uint ) -> Option < A > {
1605
+ fn idx ( & mut self , index : uint ) -> Option < A > {
1604
1606
if index >= self . indexable ( ) {
1605
1607
None
1606
1608
} else {
@@ -1649,7 +1651,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<A> for Take<T> {
1649
1651
}
1650
1652
1651
1653
#[ inline]
1652
- fn idx ( & self , index : uint ) -> Option < A > {
1654
+ fn idx ( & mut self , index : uint ) -> Option < A > {
1653
1655
if index >= self . n {
1654
1656
None
1655
1657
} else {
@@ -1799,7 +1801,7 @@ impl<A, T: RandomAccessIterator<A>> RandomAccessIterator<A> for Fuse<T> {
1799
1801
}
1800
1802
1801
1803
#[ inline]
1802
- fn idx ( & self , index : uint ) -> Option < A > {
1804
+ fn idx ( & mut self , index : uint ) -> Option < A > {
1803
1805
self . iter . idx ( index)
1804
1806
}
1805
1807
}
@@ -1862,8 +1864,9 @@ for Inspect<'a, A, T> {
1862
1864
}
1863
1865
1864
1866
#[ 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)
1867
1870
}
1868
1871
}
1869
1872
@@ -2164,7 +2167,7 @@ impl<A: Clone> RandomAccessIterator<A> for Repeat<A> {
2164
2167
#[ inline]
2165
2168
fn indexable ( & self ) -> uint { uint:: MAX }
2166
2169
#[ inline]
2167
- fn idx ( & self , _: uint ) -> Option < A > { Some ( self . element . clone ( ) ) }
2170
+ fn idx ( & mut self , _: uint ) -> Option < A > { Some ( self . element . clone ( ) ) }
2168
2171
}
2169
2172
2170
2173
/// Functions for lexicographical ordering of sequences.
0 commit comments