diff options
| author | oxalica <oxalicc@pm.me> | 2023-05-06 21:15:49 +0800 |
|---|---|---|
| committer | oxalica <oxalicc@pm.me> | 2023-05-06 21:15:57 +0800 |
| commit | 300f3a1b43d13b08b2dcd01bdfb992456e3cc012 (patch) | |
| tree | 521dee7b27efb27684c3b74db9809e358dc0c2bb /lib | |
| parent | a4966c92829f945d3846eb0ca0e240ac7f7c8c60 (diff) | |
| download | rust-300f3a1b43d13b08b2dcd01bdfb992456e3cc012.tar.gz rust-300f3a1b43d13b08b2dcd01bdfb992456e3cc012.zip | |
Impl `ExactSizeIterator` for `IdxRange`
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/la-arena/src/lib.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/la-arena/src/lib.rs b/lib/la-arena/src/lib.rs index b03fa5b61d3..c793fff848e 100644 --- a/lib/la-arena/src/lib.rs +++ b/lib/la-arena/src/lib.rs @@ -176,9 +176,14 @@ impl<T> IdxRange<T> { impl<T> Iterator for IdxRange<T> { type Item = Idx<T>; + fn next(&mut self) -> Option<Self::Item> { self.range.next().map(|raw| Idx::from_raw(raw.into())) } + + fn size_hint(&self) -> (usize, Option<usize>) { + self.range.size_hint() + } } impl<T> DoubleEndedIterator for IdxRange<T> { @@ -187,6 +192,8 @@ impl<T> DoubleEndedIterator for IdxRange<T> { } } +impl<T> ExactSizeIterator for IdxRange<T> {} + impl<T> fmt::Debug for IdxRange<T> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.debug_tuple(&format!("IdxRange::<{}>", std::any::type_name::<T>())) |
