Skip to content

Commit 1a4b6e4

Browse files
committed
implement FusedIterator for all HeaderMap iterators (#318)
Increases minium Rust version to 1.26, when FusedIterator was stabilized.
1 parent c18552f commit 1a4b6e4

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ matrix:
1414
- rustup target add wasm32-unknown-unknown
1515
- cargo build --target=wasm32-unknown-unknown
1616
# minimum rustc version
17-
- rust: 1.20.0
17+
- rust: 1.26.0
1818
script: cargo build
1919

2020
script:

src/header/map.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use std::{fmt, mem, ops, ptr, vec};
22
use std::collections::hash_map::RandomState;
33
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};
66
use std::marker::PhantomData;
77

88
use convert::{HttpTryFrom, HttpTryInto};
@@ -2039,6 +2039,8 @@ impl<'a, T> Iterator for Iter<'a, T> {
20392039
}
20402040
}
20412041

2042+
impl<'a, T> FusedIterator for Iter<'a, T> {}
2043+
20422044
unsafe impl<'a, T: Sync> Sync for Iter<'a, T> {}
20432045
unsafe impl<'a, T: Sync> Send for Iter<'a, T> {}
20442046

@@ -2100,6 +2102,8 @@ impl<'a, T> Iterator for IterMut<'a, T> {
21002102
}
21012103
}
21022104

2105+
impl<'a, T> FusedIterator for IterMut<'a, T> {}
2106+
21032107
unsafe impl<'a, T: Sync> Sync for IterMut<'a, T> {}
21042108
unsafe impl<'a, T: Send> Send for IterMut<'a, T> {}
21052109

@@ -2118,6 +2122,7 @@ impl<'a, T> Iterator for Keys<'a, T> {
21182122
}
21192123

21202124
impl<'a, T> ExactSizeIterator for Keys<'a, T> {}
2125+
impl<'a, T> FusedIterator for Keys<'a, T> {}
21212126

21222127
// ===== impl Values ====
21232128

@@ -2133,6 +2138,8 @@ impl<'a, T> Iterator for Values<'a, T> {
21332138
}
21342139
}
21352140

2141+
impl<'a, T> FusedIterator for Values<'a, T> {}
2142+
21362143
// ===== impl ValuesMut ====
21372144

21382145
impl<'a, T> Iterator for ValuesMut<'a, T> {
@@ -2147,6 +2154,8 @@ impl<'a, T> Iterator for ValuesMut<'a, T> {
21472154
}
21482155
}
21492156

2157+
impl<'a, T> FusedIterator for ValuesMut<'a, T> {}
2158+
21502159
// ===== impl Drain =====
21512160

21522161
impl<'a, T> Iterator for Drain<'a, T> {
@@ -2195,6 +2204,8 @@ impl<'a, T> Iterator for Drain<'a, T> {
21952204
}
21962205
}
21972206

2207+
impl<'a, T> FusedIterator for Drain<'a, T> {}
2208+
21982209
impl<'a, T> Drop for Drain<'a, T> {
21992210
fn drop(&mut self) {
22002211
for _ in self {}
@@ -2551,6 +2562,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIter<'a, T> {
25512562
}
25522563
}
25532564

2565+
impl<'a, T> FusedIterator for ValueIter<'a, T> {}
2566+
25542567
// ===== impl ValueIterMut =====
25552568

25562569
impl<'a, T: 'a> Iterator for ValueIterMut<'a, T> {
@@ -2630,6 +2643,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIterMut<'a, T> {
26302643
}
26312644
}
26322645

2646+
impl<'a, T> FusedIterator for ValueIterMut<'a, T> {}
2647+
26332648
unsafe impl<'a, T: Sync> Sync for ValueIterMut<'a, T> {}
26342649
unsafe impl<'a, T: Send> Send for ValueIterMut<'a, T> {}
26352650

@@ -2670,6 +2685,8 @@ impl<T> Iterator for IntoIter<T> {
26702685
}
26712686
}
26722687

2688+
impl<T> FusedIterator for IntoIter<T> {}
2689+
26732690
impl<T> Drop for IntoIter<T> {
26742691
fn drop(&mut self) {
26752692
// Ensure the iterator is consumed
@@ -3040,6 +3057,8 @@ impl<'a, T> Iterator for ValueDrain<'a, T> {
30403057
}
30413058
}
30423059

3060+
impl<'a, T> FusedIterator for ValueDrain<'a, T> {}
3061+
30433062
impl<'a, T> Drop for ValueDrain<'a, T> {
30443063
fn drop(&mut self) {
30453064
while let Some(_) = self.next() {

0 commit comments

Comments
 (0)