@@ -183,7 +183,7 @@ pub trait IteratorExt<A>: Iterator<A> {
183
183
/// ```
184
184
#[ inline]
185
185
#[ unstable = "waiting for unboxed closures" ]
186
- fn filter < ' r > ( self , predicate: | & A | : ' r -> bool ) -> Filter <' r , A , Self > {
186
+ fn filter < P > ( self , predicate : P ) -> Filter < A , Self , P > where P : FnMut ( & A ) -> bool {
187
187
Filter { iter : self , predicate : predicate}
188
188
}
189
189
@@ -1438,13 +1438,13 @@ impl<A, B, I, F> RandomAccessIterator<B> for Map<A, B, I, F> where
1438
1438
/// An iterator which filters the elements of `iter` with `predicate`
1439
1439
#[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
1440
1440
#[ stable]
1441
- pub struct Filter < ' a , A , T > {
1442
- iter : T ,
1443
- predicate: | & A | : ' a -> bool
1441
+ pub struct Filter < A , I , P > where I : Iterator < A > , P : FnMut ( & A ) -> bool {
1442
+ iter : I ,
1443
+ predicate : P ,
1444
1444
}
1445
1445
1446
1446
#[ unstable = "trait is unstable" ]
1447
- impl <' a , A , T : Iterator < A > > Iterator < A > for Filter < ' a , A , T > {
1447
+ impl < A , I , P > Iterator < A > for Filter < A , I , P > where I : Iterator < A > , P : FnMut ( & A ) -> bool {
1448
1448
#[ inline]
1449
1449
fn next ( & mut self ) -> Option < A > {
1450
1450
for x in self . iter {
@@ -1465,7 +1465,10 @@ impl<'a, A, T: Iterator<A>> Iterator<A> for Filter<'a, A, T> {
1465
1465
}
1466
1466
1467
1467
#[ unstable = "trait is unstable" ]
1468
- impl < ' a , A , T : DoubleEndedIterator < A > > DoubleEndedIterator < A > for Filter < ' a , A , T > {
1468
+ impl < A , I , P > DoubleEndedIterator < A > for Filter < A , I , P > where
1469
+ I : DoubleEndedIterator < A > ,
1470
+ P : FnMut ( & A ) -> bool ,
1471
+ {
1469
1472
#[ inline]
1470
1473
fn next_back ( & mut self ) -> Option < A > {
1471
1474
for x in self . iter . by_ref ( ) . rev ( ) {
0 commit comments