@@ -62,7 +62,7 @@ use cmp::Ord;
6262use kinds:: Copy ;
6363use mem;
6464use num:: { ToPrimitive , Int } ;
65- use ops:: { Add , Deref } ;
65+ use ops:: { Add , Deref , FnMut } ;
6666use option:: Option ;
6767use option:: Option :: { Some , None } ;
6868use uint;
@@ -165,7 +165,7 @@ pub trait IteratorExt<A>: Iterator<A> {
165165 /// ```
166166 #[ inline]
167167 #[ unstable = "waiting for unboxed closures" ]
168- fn map < ' r , B > ( self , f : | A | : ' r -> B ) -> Map <' r , A , B , Self > {
168+ fn map < B , F : FnMut ( A ) -> B > ( self , f : F ) -> Map < A , B , Self , F > {
169169 Map { iter : self , f : f}
170170 }
171171
@@ -778,7 +778,10 @@ impl<'a, A, T: ExactSizeIterator<A>> ExactSizeIterator<A> for Inspect<'a, A, T>
778778#[ unstable = "trait is unstable" ]
779779impl < A , T : ExactSizeIterator < A > > ExactSizeIterator < A > for Rev < T > { }
780780#[ unstable = "trait is unstable" ]
781- impl < ' a , A , B , T : ExactSizeIterator < A > > ExactSizeIterator < B > for Map < ' a , A , B , T > { }
781+ impl < A , B , I , F > ExactSizeIterator < B > for Map < A , B , I , F > where
782+ I : ExactSizeIterator < A > ,
783+ F : FnMut ( A ) -> B ,
784+ { }
782785#[ unstable = "trait is unstable" ]
783786impl < A , B , T , U > ExactSizeIterator < ( A , B ) > for Zip < T , U >
784787 where T : ExactSizeIterator < A > , U : ExactSizeIterator < B > { }
@@ -1374,12 +1377,12 @@ RandomAccessIterator<(A, B)> for Zip<T, U> {
13741377/// An iterator which maps the values of `iter` with `f`
13751378#[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
13761379#[ stable]
1377- pub struct Map < ' a , A , B , T > {
1378- iter : T ,
1379- f : | A | : ' a -> B
1380+ pub struct Map < A , B , I : Iterator < A > , F : FnMut ( A ) -> B > {
1381+ iter : I ,
1382+ f : F ,
13801383}
13811384
1382- impl <' a , A , B , T > Map <' a , A , B , T > {
1385+ impl < A , B , I , F > Map < A , B , I , F > where I : Iterator < A > , F : FnMut ( A ) -> B {
13831386 #[ inline]
13841387 fn do_map ( & mut self , elt : Option < A > ) -> Option < B > {
13851388 match elt {
@@ -1390,7 +1393,7 @@ impl<'a, A, B, T> Map<'a, A, B, T> {
13901393}
13911394
13921395#[ unstable = "trait is unstable" ]
1393- impl < ' a , A , B , T : Iterator < A > > Iterator < B > for Map < ' a , A , B , T > {
1396+ impl < A , B , I , F > Iterator < B > for Map < A , B , I , F > where I : Iterator < A > , F : FnMut ( A ) -> B {
13941397 #[ inline]
13951398 fn next ( & mut self ) -> Option < B > {
13961399 let next = self . iter . next ( ) ;
@@ -1404,7 +1407,10 @@ impl<'a, A, B, T: Iterator<A>> Iterator<B> for Map<'a, A, B, T> {
14041407}
14051408
14061409#[ unstable = "trait is unstable" ]
1407- impl < ' a , A , B , T : DoubleEndedIterator < A > > DoubleEndedIterator < B > for Map < ' a , A , B , T > {
1410+ impl < A , B , I , F > DoubleEndedIterator < B > for Map < A , B , I , F > where
1411+ I : DoubleEndedIterator < A > ,
1412+ F : FnMut ( A ) -> B ,
1413+ {
14081414 #[ inline]
14091415 fn next_back ( & mut self ) -> Option < B > {
14101416 let next = self . iter . next_back ( ) ;
@@ -1413,7 +1419,10 @@ impl<'a, A, B, T: DoubleEndedIterator<A>> DoubleEndedIterator<B> for Map<'a, A,
14131419}
14141420
14151421#[ experimental = "trait is experimental" ]
1416- impl < ' a , A , B , T : RandomAccessIterator < A > > RandomAccessIterator < B > for Map < ' a , A , B , T > {
1422+ impl < A , B , I , F > RandomAccessIterator < B > for Map < A , B , I , F > where
1423+ I : RandomAccessIterator < A > ,
1424+ F : FnMut ( A ) -> B ,
1425+ {
14171426 #[ inline]
14181427 fn indexable ( & self ) -> uint {
14191428 self . iter . indexable ( )
0 commit comments