@@ -372,8 +372,10 @@ pub trait IteratorExt<A>: Iterator<A> {
372
372
/// ```
373
373
#[ inline]
374
374
#[ unstable = "waiting for unboxed closures" ]
375
- fn flat_map < ' r , B , U : Iterator < B > > ( self , f: |A |: ' r -> U )
376
- -> FlatMap <' r, A , Self , U > {
375
+ fn flat_map < B , U , F > ( self , f : F ) -> FlatMap < A , B , Self , U , F > where
376
+ U : Iterator < B > ,
377
+ F : FnMut ( A ) -> U ,
378
+ {
377
379
FlatMap { iter : self , f : f, frontiter : None , backiter : None }
378
380
}
379
381
@@ -1864,15 +1866,19 @@ impl<A, B, I, St, F> Iterator<B> for Scan<A, B, I, St, F> where
1864
1866
///
1865
1867
#[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
1866
1868
#[ unstable = "waiting for unboxed closures" ]
1867
- pub struct FlatMap < ' a , A , T , U > {
1868
- iter : T ,
1869
- f : | A | : ' a -> U ,
1869
+ pub struct FlatMap < A , B , I , U , F > where I : Iterator < A > , U : Iterator < B > , F : FnMut ( A ) -> U {
1870
+ iter : I ,
1871
+ f : F ,
1870
1872
frontiter : Option < U > ,
1871
1873
backiter : Option < U > ,
1872
1874
}
1873
1875
1874
1876
#[ unstable = "trait is unstable" ]
1875
- impl < ' a , A , T : Iterator < A > , B , U : Iterator < B > > Iterator < B > for FlatMap < ' a , A , T , U > {
1877
+ impl < A , B , I , U , F > Iterator < B > for FlatMap < A , B , I , U , F > where
1878
+ I : Iterator < A > ,
1879
+ U : Iterator < B > ,
1880
+ F : FnMut ( A ) -> U ,
1881
+ {
1876
1882
#[ inline]
1877
1883
fn next ( & mut self ) -> Option < B > {
1878
1884
loop {
@@ -1901,10 +1907,11 @@ impl<'a, A, T: Iterator<A>, B, U: Iterator<B>> Iterator<B> for FlatMap<'a, A, T,
1901
1907
}
1902
1908
1903
1909
#[ unstable = "trait is unstable" ]
1904
- impl < ' a ,
1905
- A , T : DoubleEndedIterator < A > ,
1906
- B , U : DoubleEndedIterator < B > > DoubleEndedIterator < B >
1907
- for FlatMap < ' a , A , T , U > {
1910
+ impl < A , B , I , U , F > DoubleEndedIterator < B > for FlatMap < A , B , I , U , F > where
1911
+ I : DoubleEndedIterator < A > ,
1912
+ U : DoubleEndedIterator < B > ,
1913
+ F : FnMut ( A ) -> U ,
1914
+ {
1908
1915
#[ inline]
1909
1916
fn next_back ( & mut self ) -> Option < B > {
1910
1917
loop {
0 commit comments