11
11
use core:: cmp:: Ordering ;
12
12
use core:: fmt:: Debug ;
13
13
use core:: hash:: { Hash , Hasher } ;
14
- use core:: iter:: { FromIterator , Peekable } ;
14
+ use core:: iter:: { FromIterator , Peekable , FusedIterator } ;
15
15
use core:: marker:: PhantomData ;
16
16
use core:: ops:: Index ;
17
17
use core:: { fmt, intrinsics, mem, ptr} ;
@@ -1147,6 +1147,9 @@ impl<'a, K: 'a, V: 'a> Iterator for Iter<'a, K, V> {
1147
1147
}
1148
1148
}
1149
1149
1150
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1151
+ impl < ' a , K , V > FusedIterator for Iter < ' a , K , V > { }
1152
+
1150
1153
impl < ' a , K : ' a , V : ' a > DoubleEndedIterator for Iter < ' a , K , V > {
1151
1154
fn next_back ( & mut self ) -> Option < ( & ' a K , & ' a V ) > {
1152
1155
if self . length == 0 {
@@ -1216,6 +1219,9 @@ impl<'a, K: 'a, V: 'a> ExactSizeIterator for IterMut<'a, K, V> {
1216
1219
}
1217
1220
}
1218
1221
1222
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1223
+ impl < ' a , K , V > FusedIterator for IterMut < ' a , K , V > { }
1224
+
1219
1225
impl < K , V > IntoIterator for BTreeMap < K , V > {
1220
1226
type Item = ( K , V ) ;
1221
1227
type IntoIter = IntoIter < K , V > ;
@@ -1338,6 +1344,9 @@ impl<K, V> ExactSizeIterator for IntoIter<K, V> {
1338
1344
}
1339
1345
}
1340
1346
1347
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1348
+ impl < K , V > FusedIterator for IntoIter < K , V > { }
1349
+
1341
1350
impl < ' a , K , V > Iterator for Keys < ' a , K , V > {
1342
1351
type Item = & ' a K ;
1343
1352
@@ -1362,6 +1371,9 @@ impl<'a, K, V> ExactSizeIterator for Keys<'a, K, V> {
1362
1371
}
1363
1372
}
1364
1373
1374
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1375
+ impl < ' a , K , V > FusedIterator for Keys < ' a , K , V > { }
1376
+
1365
1377
impl < ' a , K , V > Clone for Keys < ' a , K , V > {
1366
1378
fn clone ( & self ) -> Keys < ' a , K , V > {
1367
1379
Keys { inner : self . inner . clone ( ) }
@@ -1392,6 +1404,9 @@ impl<'a, K, V> ExactSizeIterator for Values<'a, K, V> {
1392
1404
}
1393
1405
}
1394
1406
1407
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1408
+ impl < ' a , K , V > FusedIterator for Values < ' a , K , V > { }
1409
+
1395
1410
impl < ' a , K , V > Clone for Values < ' a , K , V > {
1396
1411
fn clone ( & self ) -> Values < ' a , K , V > {
1397
1412
Values { inner : self . inner . clone ( ) }
@@ -1437,6 +1452,10 @@ impl<'a, K, V> ExactSizeIterator for ValuesMut<'a, K, V> {
1437
1452
}
1438
1453
}
1439
1454
1455
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1456
+ impl < ' a , K , V > FusedIterator for ValuesMut < ' a , K , V > { }
1457
+
1458
+
1440
1459
impl < ' a , K , V > Range < ' a , K , V > {
1441
1460
unsafe fn next_unchecked ( & mut self ) -> ( & ' a K , & ' a V ) {
1442
1461
let handle = self . front ;
@@ -1511,6 +1530,9 @@ impl<'a, K, V> Range<'a, K, V> {
1511
1530
}
1512
1531
}
1513
1532
1533
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1534
+ impl < ' a , K , V > FusedIterator for Range < ' a , K , V > { }
1535
+
1514
1536
impl < ' a , K , V > Clone for Range < ' a , K , V > {
1515
1537
fn clone ( & self ) -> Range < ' a , K , V > {
1516
1538
Range {
@@ -1574,6 +1596,9 @@ impl<'a, K, V> DoubleEndedIterator for RangeMut<'a, K, V> {
1574
1596
}
1575
1597
}
1576
1598
1599
+ #[ unstable( feature = "fused" , issue = "35602" ) ]
1600
+ impl < ' a , K , V > FusedIterator for RangeMut < ' a , K , V > { }
1601
+
1577
1602
impl < ' a , K , V > RangeMut < ' a , K , V > {
1578
1603
unsafe fn next_back_unchecked ( & mut self ) -> ( & ' a K , & ' a mut V ) {
1579
1604
let handle = ptr:: read ( & self . back ) ;
0 commit comments