diff options
| author | Charles Gleason <charles_gleason@alumni.brown.edu> | 2019-10-04 19:07:13 -0400 |
|---|---|---|
| committer | Charles Gleason <charles_gleason@alumni.brown.edu> | 2019-10-10 22:49:21 -0400 |
| commit | d21eeb110c64d677652a03e858db1833ddf7761b (patch) | |
| tree | c5e2e7294d3287cfed0e43325c75ddaed0aad394 /src/liballoc | |
| parent | 10671f10c3559f6b96593149dce5467b0feccab6 (diff) | |
| download | rust-d21eeb110c64d677652a03e858db1833ddf7761b.tar.gz rust-d21eeb110c64d677652a03e858db1833ddf7761b.zip | |
Override nth for VecDeque Iter and IterMut
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/collections/vec_deque.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/liballoc/collections/vec_deque.rs b/src/liballoc/collections/vec_deque.rs index 42c00fd121d..0bf573f5e25 100644 --- a/src/liballoc/collections/vec_deque.rs +++ b/src/liballoc/collections/vec_deque.rs @@ -2286,6 +2286,16 @@ impl<'a, T> Iterator for Iter<'a, T> { final_res } + fn nth(&mut self, n: usize) -> Option<Self::Item> { + if n >= count(self.tail, self.head, self.ring.len()) { + self.tail = self.head; + None + } else { + self.tail = wrap_index(self.tail.wrapping_add(n), self.ring.len()); + self.next() + } + } + #[inline] fn last(mut self) -> Option<&'a T> { self.next_back() @@ -2404,6 +2414,16 @@ impl<'a, T> Iterator for IterMut<'a, T> { back.iter_mut().fold(accum, &mut f) } + fn nth(&mut self, n: usize) -> Option<Self::Item> { + if n >= count(self.tail, self.head, self.ring.len()) { + self.tail = self.head; + None + } else { + self.tail = wrap_index(self.tail.wrapping_add(n), self.ring.len()); + self.next() + } + } + #[inline] fn last(mut self) -> Option<&'a mut T> { self.next_back() |
