@@ -186,7 +186,7 @@ pub trait IteratorUtil<A> {
186
186
/// assert_eq!(it.next().get(), &5);
187
187
/// assert!(it.next().is_none());
188
188
/// ~~~
189
- fn skip ( self , n : uint ) -> SkipIterator < A , Self > ;
189
+ fn skip ( self , n : uint ) -> SkipIterator < Self > ;
190
190
191
191
/// Creates an iterator which yields the first `n` elements of this
192
192
/// iterator, and then it will always return None.
@@ -203,7 +203,7 @@ pub trait IteratorUtil<A> {
203
203
/// assert_eq!(it.next().get(), &3);
204
204
/// assert!(it.next().is_none());
205
205
/// ~~~
206
- fn take ( self , n : uint ) -> TakeIterator < A , Self > ;
206
+ fn take ( self , n : uint ) -> TakeIterator < Self > ;
207
207
208
208
/// Creates a new iterator which behaves in a similar fashion to foldl.
209
209
/// There is a state which is passed between each iteration and can be
@@ -386,12 +386,12 @@ impl<A, T: Iterator<A>> IteratorUtil<A> for T {
386
386
}
387
387
388
388
#[ inline( always) ]
389
- fn skip ( self , n : uint ) -> SkipIterator < A , T > {
389
+ fn skip ( self , n : uint ) -> SkipIterator < T > {
390
390
SkipIterator { iter : self , n : n}
391
391
}
392
392
393
393
#[ inline( always) ]
394
- fn take ( self , n : uint ) -> TakeIterator < A , T > {
394
+ fn take ( self , n : uint ) -> TakeIterator < T > {
395
395
TakeIterator { iter : self , n : n}
396
396
}
397
397
@@ -739,14 +739,13 @@ impl<'self, A, T: Iterator<A>> Iterator<A> for TakeWhileIterator<'self, A, T> {
739
739
}
740
740
}
741
741
742
- /// An iterator which skips over `n` elements of `iter`.
743
- // FIXME #6967: Dummy A parameter to get around type inference bug
744
- pub struct SkipIterator < A , T > {
742
+ /// An iterator which skips over `n` elements of `iter`
743
+ pub struct SkipIterator < T > {
745
744
priv iter : T ,
746
745
priv n: uint
747
746
}
748
747
749
- impl < A , T : Iterator < A > > Iterator < A > for SkipIterator < A , T > {
748
+ impl < A , T : Iterator < A > > Iterator < A > for SkipIterator < T > {
750
749
#[ inline]
751
750
fn next( & mut self ) -> Option < A > {
752
751
let mut next = self . iter . next ( ) ;
@@ -773,13 +772,12 @@ impl<A, T: Iterator<A>> Iterator<A> for SkipIterator<A, T> {
773
772
}
774
773
775
774
/// An iterator which only iterates over the first `n` iterations of `iter`.
776
- // FIXME #6967 : Dummy A parameter to get around type inference bug
777
- pub struct TakeIterator < A , T > {
775
+ pub struct TakeIterator < T > {
778
776
priv iter: T ,
779
777
priv n: uint
780
778
}
781
779
782
- impl <A , T : Iterator < A > > Iterator < A > for TakeIterator < A , T > {
780
+ impl <A , T : Iterator < A > > Iterator < A > for TakeIterator < T > {
783
781
#[ inline]
784
782
fn next( & mut self ) -> Option < A > {
785
783
let next = self . iter. next( ) ;
@@ -947,7 +945,7 @@ mod tests {
947
945
let ys = [ 13 , 15 , 16 , 17 , 19 , 20 , 30 ] ;
948
946
let mut it = xs. iter( ) . skip( 5 ) ;
949
947
let mut i = 0 ;
950
- for it. advance |& x| {
948
+ for it. advance |& x: & uint | {
951
949
assert_eq ! ( x, ys[ i] ) ;
952
950
i += 1 ;
953
951
}
@@ -960,7 +958,7 @@ mod tests {
960
958
let ys = [ 0 u, 1 , 2 , 3 , 5 ] ;
961
959
let mut it = xs. iter( ) . take( 5 ) ;
962
960
let mut i = 0 ;
963
- for it. advance |& x| {
961
+ for it. advance |& x: & uint | {
964
962
assert_eq ! ( x, ys[ i] ) ;
965
963
i += 1 ;
966
964
}
0 commit comments