Skip to content

Commit c0832ea

Browse files
committed
Added ExactSizeIterator support.
This allows people to just use `.len()` on the iterators.
1 parent dc0be46 commit c0832ea

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

src/lib.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,6 +1197,12 @@ impl<'a, K, V> DoubleEndedIterator for Keys<'a, K, V> {
11971197
}
11981198
}
11991199

1200+
impl<'a, K, V> ExactSizeIterator for Keys<'a, K, V> {
1201+
fn len(&self) -> usize {
1202+
self.iter.len()
1203+
}
1204+
}
1205+
12001206
pub struct Values<'a, K: 'a, V: 'a> {
12011207
iter: SliceIter<'a, Bucket<K, V>>,
12021208
}
@@ -1231,6 +1237,12 @@ impl<'a, K, V> DoubleEndedIterator for Values<'a, K, V> {
12311237
}
12321238
}
12331239

1240+
impl<'a, K, V> ExactSizeIterator for Values<'a, K, V> {
1241+
fn len(&self) -> usize {
1242+
self.iter.len()
1243+
}
1244+
}
1245+
12341246
pub struct ValuesMut<'a, K: 'a, V: 'a> {
12351247
iter: SliceIterMut<'a, Bucket<K, V>>,
12361248
}
@@ -1265,6 +1277,12 @@ impl<'a, K, V> DoubleEndedIterator for ValuesMut<'a, K, V> {
12651277
}
12661278
}
12671279

1280+
impl<'a, K, V> ExactSizeIterator for ValuesMut<'a, K, V> {
1281+
fn len(&self) -> usize {
1282+
self.iter.len()
1283+
}
1284+
}
1285+
12681286
pub struct Iter<'a, K: 'a, V: 'a> {
12691287
iter: SliceIter<'a, Bucket<K, V>>,
12701288
}
@@ -1299,6 +1317,12 @@ impl<'a, K, V> DoubleEndedIterator for Iter<'a, K, V> {
12991317
}
13001318
}
13011319

1320+
impl<'a, K, V> ExactSizeIterator for Iter<'a, K, V> {
1321+
fn len(&self) -> usize {
1322+
self.iter.len()
1323+
}
1324+
}
1325+
13021326
pub struct IterMut<'a, K: 'a, V: 'a> {
13031327
iter: SliceIterMut<'a, Bucket<K, V>>,
13041328
}
@@ -1333,6 +1357,12 @@ impl<'a, K, V> DoubleEndedIterator for IterMut<'a, K, V> {
13331357
}
13341358
}
13351359

1360+
impl<'a, K, V> ExactSizeIterator for IterMut<'a, K, V> {
1361+
fn len(&self) -> usize {
1362+
self.iter.len()
1363+
}
1364+
}
1365+
13361366
pub struct IntoIter<K, V> {
13371367
iter: VecIntoIter<Bucket<K, V>>,
13381368
}
@@ -1367,6 +1397,13 @@ impl<'a, K, V> DoubleEndedIterator for IntoIter<K, V> {
13671397
}
13681398
}
13691399

1400+
impl<K, V> ExactSizeIterator for IntoIter<K, V> {
1401+
fn len(&self) -> usize {
1402+
self.iter.len()
1403+
}
1404+
}
1405+
1406+
13701407
impl<'a, K, V, S> IntoIterator for &'a OrderMap<K, V, S>
13711408
where K: Hash + Eq,
13721409
S: BuildHasher,

0 commit comments

Comments
 (0)