Skip to content

Commit 1a309b9

Browse files
committed
Override size_hint and implement ExactSizeIterator
1 parent c15dac1 commit 1a309b9

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

src/array.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,10 @@ impl<'a, T: 'a> Iterator for Iter<'a, T> {
273273
fn next(&mut self) -> Option<&'a T> {
274274
self.inner.next()
275275
}
276+
277+
fn size_hint(&self) -> (usize, Option<usize>) {
278+
self.inner.size_hint()
279+
}
276280
}
277281

278282
impl<'a, T: 'a> DoubleEndedIterator for Iter<'a, T> {
@@ -281,6 +285,12 @@ impl<'a, T: 'a> DoubleEndedIterator for Iter<'a, T> {
281285
}
282286
}
283287

288+
impl<'a, T: 'a> ExactSizeIterator for Iter<'a, T> {
289+
fn len(&self) -> usize {
290+
self.inner.len()
291+
}
292+
}
293+
284294
/// An iterator over mutable references to values of an `Array` in the
285295
/// higher-dimensional equivalent of row-major order.
286296
pub struct IterMut<'a, T: 'a> {
@@ -293,6 +303,10 @@ impl<'a, T: 'a> Iterator for IterMut<'a, T> {
293303
fn next(&mut self) -> Option<&'a mut T> {
294304
self.inner.next()
295305
}
306+
307+
fn size_hint(&self) -> (usize, Option<usize>) {
308+
self.inner.size_hint()
309+
}
296310
}
297311

298312
impl<'a, T: 'a> DoubleEndedIterator for IterMut<'a, T> {
@@ -301,6 +315,12 @@ impl<'a, T: 'a> DoubleEndedIterator for IterMut<'a, T> {
301315
}
302316
}
303317

318+
impl<'a, T: 'a> ExactSizeIterator for IterMut<'a, T> {
319+
fn len(&self) -> usize {
320+
self.inner.len()
321+
}
322+
}
323+
304324
/// An iterator over values of an `Array` in the higher-dimensional
305325
/// equivalent of row-major order.
306326
pub struct IntoIter<T> {
@@ -313,10 +333,20 @@ impl<T> Iterator for IntoIter<T> {
313333
fn next(&mut self) -> Option<T> {
314334
self.inner.next()
315335
}
336+
337+
fn size_hint(&self) -> (usize, Option<usize>) {
338+
self.inner.size_hint()
339+
}
316340
}
317341

318342
impl<T> DoubleEndedIterator for IntoIter<T> {
319343
fn next_back(&mut self) -> Option<T> {
320344
self.inner.next_back()
321345
}
322346
}
347+
348+
impl<T> ExactSizeIterator for IntoIter<T> {
349+
fn len(&self) -> usize {
350+
self.inner.len()
351+
}
352+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy