@@ -201,7 +201,7 @@ pub trait IteratorExt<A>: Iterator<A> {
201
201
/// ```
202
202
#[ inline]
203
203
#[ unstable = "waiting for unboxed closures" ]
204
- fn filter_map < ' r , B > ( self , f: | A | : ' r -> Option < B > ) -> FilterMap <' r , A , B , Self > {
204
+ fn filter_map < B , F > ( self , f : F ) -> FilterMap < A , B , Self , F > where F : FnMut ( A ) -> Option < B > {
205
205
FilterMap { iter : self , f : f }
206
206
}
207
207
@@ -1483,13 +1483,16 @@ impl<A, I, P> DoubleEndedIterator<A> for Filter<A, I, P> where
1483
1483
/// An iterator which uses `f` to both filter and map elements from `iter`
1484
1484
#[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
1485
1485
#[ stable]
1486
- pub struct FilterMap < ' a , A , B , T > {
1487
- iter : T ,
1488
- f: | A | : ' a -> Option < B >
1486
+ pub struct FilterMap < A , B , I , F > where I : Iterator < A > , F : FnMut ( A ) -> Option < B > {
1487
+ iter : I ,
1488
+ f : F ,
1489
1489
}
1490
1490
1491
1491
#[ unstable = "trait is unstable" ]
1492
- impl <' a, A , B , T : Iterator < A > > Iterator < B > for FilterMap < ' a , A , B , T > {
1492
+ impl < A , B , I , F > Iterator < B > for FilterMap < A , B , I , F > where
1493
+ I : Iterator < A > ,
1494
+ F : FnMut ( A ) -> Option < B > ,
1495
+ {
1493
1496
#[ inline]
1494
1497
fn next ( & mut self ) -> Option < B > {
1495
1498
for x in self . iter {
@@ -1509,8 +1512,10 @@ impl<'a, A, B, T: Iterator<A>> Iterator<B> for FilterMap<'a, A, B, T> {
1509
1512
}
1510
1513
1511
1514
#[ unstable = "trait is unstable" ]
1512
- impl < ' a , A , B , T : DoubleEndedIterator < A > > DoubleEndedIterator < B >
1513
- for FilterMap < ' a , A , B , T > {
1515
+ impl < A , B , I , F > DoubleEndedIterator < B > for FilterMap < A , B , I , F > where
1516
+ I : DoubleEndedIterator < A > ,
1517
+ F : FnMut ( A ) -> Option < B > ,
1518
+ {
1514
1519
#[ inline]
1515
1520
fn next_back ( & mut self ) -> Option < B > {
1516
1521
for x in self . iter . by_ref ( ) . rev ( ) {
0 commit comments