about summary refs log tree commit diff
diff options
context:
space:
mode:
authoroxalica <oxalicc@pm.me>2023-05-06 21:59:03 +0800
committeroxalica <oxalicc@pm.me>2023-05-06 22:00:04 +0800
commit665c0cb547e044e6ff744e1b2c4b84e6232c97a6 (patch)
treea65c783e29d10b4fbceb35ecf9dd9664ef414b86
parent86eaf536004ef348df4b3490a81ccf16aeba440f (diff)
downloadrust-665c0cb547e044e6ff744e1b2c4b84e6232c97a6.tar.gz
rust-665c0cb547e044e6ff744e1b2c4b84e6232c97a6.zip
Forward `Iterator::{count,last,nth}` for `IdxRange` random access
-rw-r--r--lib/la-arena/src/lib.rs18
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> {