diff options
| author | oxalica <oxalicc@pm.me> | 2023-05-06 21:59:03 +0800 |
|---|---|---|
| committer | oxalica <oxalicc@pm.me> | 2023-05-06 22:00:04 +0800 |
| commit | 665c0cb547e044e6ff744e1b2c4b84e6232c97a6 (patch) | |
| tree | a65c783e29d10b4fbceb35ecf9dd9664ef414b86 | |
| parent | 86eaf536004ef348df4b3490a81ccf16aeba440f (diff) | |
| download | rust-665c0cb547e044e6ff744e1b2c4b84e6232c97a6.tar.gz rust-665c0cb547e044e6ff744e1b2c4b84e6232c97a6.zip | |
Forward `Iterator::{count,last,nth}` for `IdxRange` random access
| -rw-r--r-- | lib/la-arena/src/lib.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/la-arena/src/lib.rs b/lib/la-arena/src/lib.rs index eac9802e3eb..63827e0ba96 100644 --- a/lib/la-arena/src/lib.rs +++ b/lib/la-arena/src/lib.rs @@ -184,6 +184,24 @@ impl<T> Iterator for IdxRange<T> { fn size_hint(&self) -> (usize, Option<usize>) { self.range.size_hint() } + + fn count(self) -> usize + where + Self: Sized, + { + self.range.count() + } + + fn last(self) -> Option<Self::Item> + where + Self: Sized, + { + self.range.last().map(|raw| Idx::from_raw(raw.into())) + } + + fn nth(&mut self, n: usize) -> Option<Self::Item> { + self.range.nth(n).map(|raw| Idx::from_raw(raw.into())) + } } impl<T> DoubleEndedIterator for IdxRange<T> { |
