Skip to content

Commit 912534f

Browse files
seanmonstarcarllerche
authored andcommitted
implement FusedIterator for all HeaderMap iterators (#318)
Increases minium Rust version to 1.26, when FusedIterator was stabilized.
1 parent 9f86add commit 912534f

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
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: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::name::{HeaderName, HdrName, InvalidHeaderName};
44
use std::{fmt, mem, ops, ptr, vec};
55
use std::collections::hash_map::RandomState;
66
use std::hash::{BuildHasher, Hasher, Hash};
7-
use std::iter::FromIterator;
7+
use std::iter::{FromIterator, FusedIterator};
88
use std::marker::PhantomData;
99

1010
pub use self::as_header_name::AsHeaderName;
@@ -1949,6 +1949,8 @@ impl<'a, T> Iterator for Iter<'a, T> {
19491949
}
19501950
}
19511951

1952+
impl<'a, T> FusedIterator for Iter<'a, T> {}
1953+
19521954
unsafe impl<'a, T: Sync> Sync for Iter<'a, T> {}
19531955
unsafe impl<'a, T: Sync> Send for Iter<'a, T> {}
19541956

@@ -2010,6 +2012,8 @@ impl<'a, T> Iterator for IterMut<'a, T> {
20102012
}
20112013
}
20122014

2015+
impl<'a, T> FusedIterator for IterMut<'a, T> {}
2016+
20132017
unsafe impl<'a, T: Sync> Sync for IterMut<'a, T> {}
20142018
unsafe impl<'a, T: Send> Send for IterMut<'a, T> {}
20152019

@@ -2028,6 +2032,7 @@ impl<'a, T> Iterator for Keys<'a, T> {
20282032
}
20292033

20302034
impl<'a, T> ExactSizeIterator for Keys<'a, T> {}
2035+
impl<'a, T> FusedIterator for Keys<'a, T> {}
20312036

20322037
// ===== impl Values ====
20332038

@@ -2043,6 +2048,8 @@ impl<'a, T> Iterator for Values<'a, T> {
20432048
}
20442049
}
20452050

2051+
impl<'a, T> FusedIterator for Values<'a, T> {}
2052+
20462053
// ===== impl ValuesMut ====
20472054

20482055
impl<'a, T> Iterator for ValuesMut<'a, T> {
@@ -2057,6 +2064,8 @@ impl<'a, T> Iterator for ValuesMut<'a, T> {
20572064
}
20582065
}
20592066

2067+
impl<'a, T> FusedIterator for ValuesMut<'a, T> {}
2068+
20602069
// ===== impl Drain =====
20612070

20622071
impl<'a, T> Iterator for Drain<'a, T> {
@@ -2100,6 +2109,8 @@ impl<'a, T> Iterator for Drain<'a, T> {
21002109
}
21012110
}
21022111

2112+
impl<'a, T> FusedIterator for Drain<'a, T> {}
2113+
21032114
impl<'a, T> Drop for Drain<'a, T> {
21042115
fn drop(&mut self) {
21052116
unsafe {
@@ -2460,6 +2471,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIter<'a, T> {
24602471
}
24612472
}
24622473

2474+
impl<'a, T> FusedIterator for ValueIter<'a, T> {}
2475+
24632476
// ===== impl ValueIterMut =====
24642477

24652478
impl<'a, T: 'a> Iterator for ValueIterMut<'a, T> {
@@ -2539,6 +2552,8 @@ impl<'a, T: 'a> DoubleEndedIterator for ValueIterMut<'a, T> {
25392552
}
25402553
}
25412554

2555+
impl<'a, T> FusedIterator for ValueIterMut<'a, T> {}
2556+
25422557
unsafe impl<'a, T: Sync> Sync for ValueIterMut<'a, T> {}
25432558
unsafe impl<'a, T: Send> Send for ValueIterMut<'a, T> {}
25442559

@@ -2579,6 +2594,8 @@ impl<T> Iterator for IntoIter<T> {
25792594
}
25802595
}
25812596

2597+
impl<T> FusedIterator for IntoIter<T> {}
2598+
25822599
impl<T> Drop for IntoIter<T> {
25832600
fn drop(&mut self) {
25842601
// Ensure the iterator is consumed
@@ -2946,6 +2963,8 @@ impl<'a, T> Iterator for ValueDrain<'a, T> {
29462963
}
29472964
}
29482965

2966+
impl<'a, T> FusedIterator for ValueDrain<'a, T> {}
2967+
29492968
impl<'a, T> Drop for ValueDrain<'a, T> {
29502969
fn drop(&mut self) {
29512970
while let Some(_) = self.next() {

0 commit comments

Comments
 (0)