@@ -4,7 +4,7 @@ use super::name::{HeaderName, HdrName, InvalidHeaderName};
4
4
use std:: { fmt, mem, ops, ptr, vec} ;
5
5
use std:: collections:: hash_map:: RandomState ;
6
6
use std:: hash:: { BuildHasher , Hasher , Hash } ;
7
- use std:: iter:: FromIterator ;
7
+ use std:: iter:: { FromIterator , FusedIterator } ;
8
8
use std:: marker:: PhantomData ;
9
9
10
10
pub use self :: as_header_name:: AsHeaderName ;
@@ -1949,6 +1949,8 @@ impl<'a, T> Iterator for Iter<'a, T> {
1949
1949
}
1950
1950
}
1951
1951
1952
+ impl < ' a , T > FusedIterator for Iter < ' a , T > { }
1953
+
1952
1954
unsafe impl < ' a , T : Sync > Sync for Iter < ' a , T > { }
1953
1955
unsafe impl < ' a , T : Sync > Send for Iter < ' a , T > { }
1954
1956
@@ -2010,6 +2012,8 @@ impl<'a, T> Iterator for IterMut<'a, T> {
2010
2012
}
2011
2013
}
2012
2014
2015
+ impl < ' a , T > FusedIterator for IterMut < ' a , T > { }
2016
+
2013
2017
unsafe impl < ' a , T : Sync > Sync for IterMut < ' a , T > { }
2014
2018
unsafe impl < ' a , T : Send > Send for IterMut < ' a , T > { }
2015
2019
@@ -2028,6 +2032,7 @@ impl<'a, T> Iterator for Keys<'a, T> {
2028
2032
}
2029
2033
2030
2034
impl < ' a , T > ExactSizeIterator for Keys < ' a , T > { }
2035
+ impl < ' a , T > FusedIterator for Keys < ' a , T > { }
2031
2036
2032
2037
// ===== impl Values ====
2033
2038
@@ -2043,6 +2048,8 @@ impl<'a, T> Iterator for Values<'a, T> {
2043
2048
}
2044
2049
}
2045
2050
2051
+ impl < ' a , T > FusedIterator for Values < ' a , T > { }
2052
+
2046
2053
// ===== impl ValuesMut ====
2047
2054
2048
2055
impl < ' a , T > Iterator for ValuesMut < ' a , T > {
@@ -2057,6 +2064,8 @@ impl<'a, T> Iterator for ValuesMut<'a, T> {
2057
2064
}
2058
2065
}
2059
2066
2067
+ impl < ' a , T > FusedIterator for ValuesMut < ' a , T > { }
2068
+
2060
2069
// ===== impl Drain =====
2061
2070
2062
2071
impl < ' a , T > Iterator for Drain < ' a , T > {
@@ -2100,6 +2109,8 @@ impl<'a, T> Iterator for Drain<'a, T> {
2100
2109
}
2101
2110
}
2102
2111
2112
+ impl < ' a , T > FusedIterator for Drain < ' a , T > { }
2113
+
2103
2114
impl < ' a , T > Drop for Drain < ' a , T > {
2104
2115
fn drop ( & mut self ) {
2105
2116
unsafe {
@@ -2460,6 +2471,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIter<'a, T> {
2460
2471
}
2461
2472
}
2462
2473
2474
+ impl < ' a , T > FusedIterator for ValueIter < ' a , T > { }
2475
+
2463
2476
// ===== impl ValueIterMut =====
2464
2477
2465
2478
impl < ' a , T : ' a > Iterator for ValueIterMut < ' a , T > {
@@ -2539,6 +2552,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIterMut<'a, T> {
2539
2552
}
2540
2553
}
2541
2554
2555
+ impl < ' a , T > FusedIterator for ValueIterMut < ' a , T > { }
2556
+
2542
2557
unsafe impl < ' a , T : Sync > Sync for ValueIterMut < ' a , T > { }
2543
2558
unsafe impl < ' a , T : Send > Send for ValueIterMut < ' a , T > { }
2544
2559
@@ -2579,6 +2594,8 @@ impl<T> Iterator for IntoIter<T> {
2579
2594
}
2580
2595
}
2581
2596
2597
+ impl < T > FusedIterator for IntoIter < T > { }
2598
+
2582
2599
impl < T > Drop for IntoIter < T > {
2583
2600
fn drop ( & mut self ) {
2584
2601
// Ensure the iterator is consumed
@@ -2946,6 +2963,8 @@ impl<'a, T> Iterator for ValueDrain<'a, T> {
2946
2963
}
2947
2964
}
2948
2965
2966
+ impl < ' a , T > FusedIterator for ValueDrain < ' a , T > { }
2967
+
2949
2968
impl < ' a , T > Drop for ValueDrain < ' a , T > {
2950
2969
fn drop ( & mut self ) {
2951
2970
while let Some ( _) = self . next ( ) {
0 commit comments