@@ -62,7 +62,7 @@ use cmp::Ord;
62
62
use kinds:: Copy ;
63
63
use mem;
64
64
use num:: { ToPrimitive , Int } ;
65
- use ops:: { Add , Deref } ;
65
+ use ops:: { Add , Deref , FnMut } ;
66
66
use option:: Option ;
67
67
use option:: Option :: { Some , None } ;
68
68
use uint;
@@ -165,7 +165,7 @@ pub trait IteratorExt<A>: Iterator<A> {
165
165
/// ```
166
166
#[ inline]
167
167
#[ 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 > {
169
169
Map { iter : self , f : f}
170
170
}
171
171
@@ -778,7 +778,10 @@ impl<'a, A, T: ExactSizeIterator<A>> ExactSizeIterator<A> for Inspect<'a, A, T>
778
778
#[ unstable = "trait is unstable" ]
779
779
impl < A , T : ExactSizeIterator < A > > ExactSizeIterator < A > for Rev < T > { }
780
780
#[ 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
+ { }
782
785
#[ unstable = "trait is unstable" ]
783
786
impl < A , B , T , U > ExactSizeIterator < ( A , B ) > for Zip < T , U >
784
787
where T : ExactSizeIterator < A > , U : ExactSizeIterator < B > { }
@@ -1374,12 +1377,12 @@ RandomAccessIterator<(A, B)> for Zip<T, U> {
1374
1377
/// An iterator which maps the values of `iter` with `f`
1375
1378
#[ must_use = "iterator adaptors are lazy and do nothing unless consumed" ]
1376
1379
#[ 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 ,
1380
1383
}
1381
1384
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 {
1383
1386
#[ inline]
1384
1387
fn do_map ( & mut self , elt : Option < A > ) -> Option < B > {
1385
1388
match elt {
@@ -1390,7 +1393,7 @@ impl<'a, A, B, T> Map<'a, A, B, T> {
1390
1393
}
1391
1394
1392
1395
#[ 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 {
1394
1397
#[ inline]
1395
1398
fn next ( & mut self ) -> Option < B > {
1396
1399
let next = self . iter . next ( ) ;
@@ -1404,7 +1407,10 @@ impl<'a, A, B, T: Iterator<A>> Iterator<B> for Map<'a, A, B, T> {
1404
1407
}
1405
1408
1406
1409
#[ 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
+ {
1408
1414
#[ inline]
1409
1415
fn next_back ( & mut self ) -> Option < B > {
1410
1416
let next = self . iter . next_back ( ) ;
@@ -1413,7 +1419,10 @@ impl<'a, A, B, T: DoubleEndedIterator<A>> DoubleEndedIterator<B> for Map<'a, A,
1413
1419
}
1414
1420
1415
1421
#[ 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
+ {
1417
1426
#[ inline]
1418
1427
fn indexable ( & self ) -> uint {
1419
1428
self . iter . indexable ( )
0 commit comments