@@ -1388,6 +1388,19 @@ pub struct Map<A, B, I: Iterator<A>, F: FnMut(A) -> B> {
1388
1388
f : F ,
1389
1389
}
1390
1390
1391
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1392
+ impl < A , B , I , F > Clone for Map < A , B , I , F > where
1393
+ I : Clone + Iterator < A > ,
1394
+ F : Clone + FnMut ( A ) -> B ,
1395
+ {
1396
+ fn clone ( & self ) -> Map < A , B , I , F > {
1397
+ Map {
1398
+ iter : self . iter . clone ( ) ,
1399
+ f : self . f . clone ( ) ,
1400
+ }
1401
+ }
1402
+ }
1403
+
1391
1404
impl < A , B , I , F > Map < A , B , I , F > where I : Iterator < A > , F : FnMut ( A ) -> B {
1392
1405
#[ inline]
1393
1406
fn do_map ( & mut self , elt : Option < A > ) -> Option < B > {
@@ -1449,6 +1462,19 @@ pub struct Filter<A, I, P> where I: Iterator<A>, P: FnMut(&A) -> bool {
1449
1462
predicate : P ,
1450
1463
}
1451
1464
1465
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1466
+ impl < A , I , P > Clone for Filter < A , I , P > where
1467
+ I : Clone + Iterator < A > ,
1468
+ P : Clone + FnMut ( & A ) -> bool ,
1469
+ {
1470
+ fn clone ( & self ) -> Filter < A , I , P > {
1471
+ Filter {
1472
+ iter : self . iter . clone ( ) ,
1473
+ predicate : self . predicate . clone ( ) ,
1474
+ }
1475
+ }
1476
+ }
1477
+
1452
1478
#[ unstable = "trait is unstable" ]
1453
1479
impl < A , I , P > Iterator < A > for Filter < A , I , P > where I : Iterator < A > , P : FnMut ( & A ) -> bool {
1454
1480
#[ inline]
@@ -1494,6 +1520,19 @@ pub struct FilterMap<A, B, I, F> where I: Iterator<A>, F: FnMut(A) -> Option<B>
1494
1520
f : F ,
1495
1521
}
1496
1522
1523
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1524
+ impl < A , B , I , F > Clone for FilterMap < A , B , I , F > where
1525
+ I : Clone + Iterator < A > ,
1526
+ F : Clone + FnMut ( A ) -> Option < B > ,
1527
+ {
1528
+ fn clone ( & self ) -> FilterMap < A , B , I , F > {
1529
+ FilterMap {
1530
+ iter : self . iter . clone ( ) ,
1531
+ f : self . f . clone ( ) ,
1532
+ }
1533
+ }
1534
+ }
1535
+
1497
1536
#[ unstable = "trait is unstable" ]
1498
1537
impl < A , B , I , F > Iterator < B > for FilterMap < A , B , I , F > where
1499
1538
I : Iterator < A > ,
@@ -1657,6 +1696,20 @@ pub struct SkipWhile<A, I, P> where I: Iterator<A>, P: FnMut(&A) -> bool {
1657
1696
predicate : P ,
1658
1697
}
1659
1698
1699
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1700
+ impl < A , I , P > Clone for SkipWhile < A , I , P > where
1701
+ I : Clone + Iterator < A > ,
1702
+ P : Clone + FnMut ( & A ) -> bool ,
1703
+ {
1704
+ fn clone ( & self ) -> SkipWhile < A , I , P > {
1705
+ SkipWhile {
1706
+ iter : self . iter . clone ( ) ,
1707
+ flag : self . flag ,
1708
+ predicate : self . predicate . clone ( ) ,
1709
+ }
1710
+ }
1711
+ }
1712
+
1660
1713
#[ unstable = "trait is unstable" ]
1661
1714
impl < A , I , P > Iterator < A > for SkipWhile < A , I , P > where I : Iterator < A > , P : FnMut ( & A ) -> bool {
1662
1715
#[ inline]
@@ -1686,6 +1739,20 @@ pub struct TakeWhile<A, I, P> where I: Iterator<A>, P: FnMut(&A) -> bool {
1686
1739
predicate : P ,
1687
1740
}
1688
1741
1742
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1743
+ impl < A , I , P > Clone for TakeWhile < A , I , P > where
1744
+ I : Clone + Iterator < A > ,
1745
+ P : Clone + FnMut ( & A ) -> bool ,
1746
+ {
1747
+ fn clone ( & self ) -> TakeWhile < A , I , P > {
1748
+ TakeWhile {
1749
+ iter : self . iter . clone ( ) ,
1750
+ flag : self . flag ,
1751
+ predicate : self . predicate . clone ( ) ,
1752
+ }
1753
+ }
1754
+ }
1755
+
1689
1756
#[ unstable = "trait is unstable" ]
1690
1757
impl < A , I , P > Iterator < A > for TakeWhile < A , I , P > where I : Iterator < A > , P : FnMut ( & A ) -> bool {
1691
1758
#[ inline]
@@ -1847,6 +1914,21 @@ pub struct Scan<A, B, I, St, F> where I: Iterator<A>, F: FnMut(&mut St, A) -> Op
1847
1914
pub state : St ,
1848
1915
}
1849
1916
1917
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1918
+ impl < A , B , I , St , F > Clone for Scan < A , B , I , St , F > where
1919
+ I : Clone + Iterator < A > ,
1920
+ St : Clone ,
1921
+ F : Clone + FnMut ( & mut St , A ) -> Option < B > ,
1922
+ {
1923
+ fn clone ( & self ) -> Scan < A , B , I , St , F > {
1924
+ Scan {
1925
+ iter : self . iter . clone ( ) ,
1926
+ f : self . f . clone ( ) ,
1927
+ state : self . state . clone ( ) ,
1928
+ }
1929
+ }
1930
+ }
1931
+
1850
1932
#[ unstable = "trait is unstable" ]
1851
1933
impl < A , B , I , St , F > Iterator < B > for Scan < A , B , I , St , F > where
1852
1934
I : Iterator < A > ,
@@ -1876,6 +1958,22 @@ pub struct FlatMap<A, B, I, U, F> where I: Iterator<A>, U: Iterator<B>, F: FnMut
1876
1958
backiter : Option < U > ,
1877
1959
}
1878
1960
1961
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
1962
+ impl < A , B , I , U , F > Clone for FlatMap < A , B , I , U , F > where
1963
+ I : Clone + Iterator < A > ,
1964
+ U : Clone + Iterator < B > ,
1965
+ F : Clone + FnMut ( A ) -> U ,
1966
+ {
1967
+ fn clone ( & self ) -> FlatMap < A , B , I , U , F > {
1968
+ FlatMap {
1969
+ iter : self . iter . clone ( ) ,
1970
+ f : self . f . clone ( ) ,
1971
+ frontiter : self . frontiter . clone ( ) ,
1972
+ backiter : self . backiter . clone ( ) ,
1973
+ }
1974
+ }
1975
+ }
1976
+
1879
1977
#[ unstable = "trait is unstable" ]
1880
1978
impl < A , B , I , U , F > Iterator < B > for FlatMap < A , B , I , U , F > where
1881
1979
I : Iterator < A > ,
@@ -2020,6 +2118,19 @@ pub struct Inspect<A, I, F> where I: Iterator<A>, F: FnMut(&A) {
2020
2118
f : F ,
2021
2119
}
2022
2120
2121
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
2122
+ impl < A , I , F > Clone for Inspect < A , I , F > where
2123
+ I : Clone + Iterator < A > ,
2124
+ F : Clone + FnMut ( & A ) ,
2125
+ {
2126
+ fn clone ( & self ) -> Inspect < A , I , F > {
2127
+ Inspect {
2128
+ iter : self . iter . clone ( ) ,
2129
+ f : self . f . clone ( ) ,
2130
+ }
2131
+ }
2132
+ }
2133
+
2023
2134
impl < A , I , F > Inspect < A , I , F > where I : Iterator < A > , F : FnMut ( & A ) {
2024
2135
#[ inline]
2025
2136
fn do_inspect ( & mut self , elt : Option < A > ) -> Option < A > {
@@ -2114,6 +2225,19 @@ pub struct Unfold<A, St, F> where F: FnMut(&mut St) -> Option<A> {
2114
2225
pub state : St ,
2115
2226
}
2116
2227
2228
+ // FIXME(#19839) Remove in favor of `#[deriving(Clone)]`
2229
+ impl < A , St , F > Clone for Unfold < A , St , F > where
2230
+ F : Clone + FnMut ( & mut St ) -> Option < A > ,
2231
+ St : Clone ,
2232
+ {
2233
+ fn clone ( & self ) -> Unfold < A , St , F > {
2234
+ Unfold {
2235
+ f : self . f . clone ( ) ,
2236
+ state : self . state . clone ( ) ,
2237
+ }
2238
+ }
2239
+ }
2240
+
2117
2241
#[ experimental]
2118
2242
impl < A , St , F > Unfold < A , St , F > where F : FnMut ( & mut St ) -> Option < A > {
2119
2243
/// Creates a new iterator with the specified closure as the "iterator
0 commit comments