@@ -22,10 +22,8 @@ pub trait IteratorUtil<A> {
22
22
// FIXME: #5898: should be called map
23
23
fn transform < ' r , B > ( self , f : & ' r fn ( A ) -> B ) -> MapIterator < ' r , A , B , Self > ;
24
24
fn filter < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> FilterIterator < ' r , A , Self > ;
25
- fn skip_while < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> SkipWhileIterator < ' r , A , Self > ;
26
- fn take_while < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> TakeWhileIterator < ' r , A , Self > ;
27
- fn skip ( self , n : uint ) -> SkipIterator < Self > ;
28
- fn take ( self , n : uint ) -> TakeIterator < Self > ;
25
+ fn dropwhile < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> DropWhileIterator < ' r , A , Self > ;
26
+ fn takewhile < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> TakeWhileIterator < ' r , A , Self > ;
29
27
fn enumerate ( self ) -> EnumerateIterator < Self > ;
30
28
fn advance ( & mut self , f : & fn ( A ) -> bool ) ;
31
29
}
@@ -53,25 +51,15 @@ impl<A, T: Iterator<A>> IteratorUtil<A> for T {
53
51
}
54
52
55
53
#[ inline( always) ]
56
- fn skip_while < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> SkipWhileIterator < ' r , A , T > {
57
- SkipWhileIterator { iter : self , flag : false , predicate : predicate}
54
+ fn dropwhile < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> DropWhileIterator < ' r , A , T > {
55
+ DropWhileIterator { iter : self , flag : false , predicate : predicate}
58
56
}
59
57
60
58
#[ inline( always) ]
61
- fn take_while < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> TakeWhileIterator < ' r , A , T > {
59
+ fn takewhile < ' r > ( self , predicate : & ' r fn ( & A ) -> bool ) -> TakeWhileIterator < ' r , A , T > {
62
60
TakeWhileIterator { iter : self , flag : false , predicate : predicate}
63
61
}
64
62
65
- #[ inline( always) ]
66
- fn skip ( self , n : uint ) -> SkipIterator < T > {
67
- SkipIterator { iter : self , n : n}
68
- }
69
-
70
- #[ inline( always) ]
71
- fn take ( self , n : uint ) -> TakeIterator < T > {
72
- TakeIterator { iter : self , n : n}
73
- }
74
-
75
63
/// A shim implementing the `for` loop iteration protocol for iterator objects
76
64
#[ inline]
77
65
fn advance ( & mut self , f : & fn ( A ) -> bool ) {
@@ -154,13 +142,13 @@ impl<A, T: Iterator<A>> Iterator<(uint, A)> for EnumerateIterator<T> {
154
142
}
155
143
}
156
144
157
- pub struct SkipWhileIterator < ' self , A , T > {
145
+ pub struct DropWhileIterator < ' self , A , T > {
158
146
priv iter : T ,
159
147
priv flag : bool ,
160
148
priv predicate : & ' self fn ( & A ) -> bool
161
149
}
162
150
163
- impl < ' self , A , T : Iterator < A > > Iterator < A > for SkipWhileIterator < ' self , A , T > {
151
+ impl < ' self , A , T : Iterator < A > > Iterator < A > for DropWhileIterator < ' self , A , T > {
164
152
#[ inline]
165
153
fn next ( & mut self ) -> Option < A > {
166
154
let mut next = self . iter . next ( ) ;
@@ -211,52 +199,3 @@ impl<'self, A, T: Iterator<A>> Iterator<A> for TakeWhileIterator<'self, A, T> {
211
199
}
212
200
}
213
201
}
214
-
215
- pub struct SkipIterator < T > {
216
- priv iter : T ,
217
- priv n: uint
218
- }
219
-
220
- impl < A , T : Iterator < A > > Iterator < A > for SkipIterator < T > {
221
- #[ inline]
222
- fn next ( & mut self ) -> Option < A > {
223
- let mut next = self . iter . next ( ) ;
224
- if self . n == 0 {
225
- next
226
- } else {
227
- let n = self . n ;
228
- for n. times {
229
- match next {
230
- Some ( _) => {
231
- next = self . iter. next( ) ;
232
- loop
233
- }
234
- None => {
235
- self . n = 0 ;
236
- return None
237
- }
238
- }
239
- }
240
- self . n = 0 ;
241
- next
242
- }
243
- }
244
- }
245
-
246
- pub struct TakeIterator < T > {
247
- priv iter : T ,
248
- priv n: uint
249
- }
250
-
251
- impl < A , T : Iterator < A > > Iterator < A > for TakeIterator < T > {
252
- #[ inline]
253
- fn next ( & mut self ) -> Option < A > {
254
- let next = self . iter . next ( ) ;
255
- if self . n != 0 {
256
- self . n -= 1 ;
257
- next
258
- } else {
259
- None
260
- }
261
- }
262
- }
0 commit comments