1
1
use std:: { fmt, mem, ops, ptr, vec} ;
2
2
use std:: collections:: hash_map:: RandomState ;
3
3
use std:: collections:: HashMap ;
4
- use std:: hash:: { BuildHasher , Hash , Hasher } ;
5
- use std:: iter:: FromIterator ;
4
+ use std:: hash:: { BuildHasher , Hasher , Hash } ;
5
+ use std:: iter:: { FromIterator , FusedIterator } ;
6
6
use std:: marker:: PhantomData ;
7
7
8
8
use convert:: { HttpTryFrom , HttpTryInto } ;
@@ -2039,6 +2039,8 @@ impl<'a, T> Iterator for Iter<'a, T> {
2039
2039
}
2040
2040
}
2041
2041
2042
+ impl < ' a , T > FusedIterator for Iter < ' a , T > { }
2043
+
2042
2044
unsafe impl < ' a , T : Sync > Sync for Iter < ' a , T > { }
2043
2045
unsafe impl < ' a , T : Sync > Send for Iter < ' a , T > { }
2044
2046
@@ -2100,6 +2102,8 @@ impl<'a, T> Iterator for IterMut<'a, T> {
2100
2102
}
2101
2103
}
2102
2104
2105
+ impl < ' a , T > FusedIterator for IterMut < ' a , T > { }
2106
+
2103
2107
unsafe impl < ' a , T : Sync > Sync for IterMut < ' a , T > { }
2104
2108
unsafe impl < ' a , T : Send > Send for IterMut < ' a , T > { }
2105
2109
@@ -2118,6 +2122,7 @@ impl<'a, T> Iterator for Keys<'a, T> {
2118
2122
}
2119
2123
2120
2124
impl < ' a , T > ExactSizeIterator for Keys < ' a , T > { }
2125
+ impl < ' a , T > FusedIterator for Keys < ' a , T > { }
2121
2126
2122
2127
// ===== impl Values ====
2123
2128
@@ -2133,6 +2138,8 @@ impl<'a, T> Iterator for Values<'a, T> {
2133
2138
}
2134
2139
}
2135
2140
2141
+ impl < ' a , T > FusedIterator for Values < ' a , T > { }
2142
+
2136
2143
// ===== impl ValuesMut ====
2137
2144
2138
2145
impl < ' a , T > Iterator for ValuesMut < ' a , T > {
@@ -2147,6 +2154,8 @@ impl<'a, T> Iterator for ValuesMut<'a, T> {
2147
2154
}
2148
2155
}
2149
2156
2157
+ impl < ' a , T > FusedIterator for ValuesMut < ' a , T > { }
2158
+
2150
2159
// ===== impl Drain =====
2151
2160
2152
2161
impl < ' a , T > Iterator for Drain < ' a , T > {
@@ -2195,6 +2204,8 @@ impl<'a, T> Iterator for Drain<'a, T> {
2195
2204
}
2196
2205
}
2197
2206
2207
+ impl < ' a , T > FusedIterator for Drain < ' a , T > { }
2208
+
2198
2209
impl < ' a , T > Drop for Drain < ' a , T > {
2199
2210
fn drop ( & mut self ) {
2200
2211
for _ in self { }
@@ -2551,6 +2562,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIter<'a, T> {
2551
2562
}
2552
2563
}
2553
2564
2565
+ impl < ' a , T > FusedIterator for ValueIter < ' a , T > { }
2566
+
2554
2567
// ===== impl ValueIterMut =====
2555
2568
2556
2569
impl < ' a , T : ' a > Iterator for ValueIterMut < ' a , T > {
@@ -2630,6 +2643,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIterMut<'a, T> {
2630
2643
}
2631
2644
}
2632
2645
2646
+ impl < ' a , T > FusedIterator for ValueIterMut < ' a , T > { }
2647
+
2633
2648
unsafe impl < ' a , T : Sync > Sync for ValueIterMut < ' a , T > { }
2634
2649
unsafe impl < ' a , T : Send > Send for ValueIterMut < ' a , T > { }
2635
2650
@@ -2670,6 +2685,8 @@ impl<T> Iterator for IntoIter<T> {
2670
2685
}
2671
2686
}
2672
2687
2688
+ impl < T > FusedIterator for IntoIter < T > { }
2689
+
2673
2690
impl < T > Drop for IntoIter < T > {
2674
2691
fn drop ( & mut self ) {
2675
2692
// Ensure the iterator is consumed
@@ -3040,6 +3057,8 @@ impl<'a, T> Iterator for ValueDrain<'a, T> {
3040
3057
}
3041
3058
}
3042
3059
3060
+ impl < ' a , T > FusedIterator for ValueDrain < ' a , T > { }
3061
+
3043
3062
impl < ' a , T > Drop for ValueDrain < ' a , T > {
3044
3063
fn drop ( & mut self ) {
3045
3064
while let Some ( _) = self . next ( ) {
0 commit comments