diff options
| author | Adrian Friedli <adi@koalatux.ch> | 2019-06-08 22:30:45 +0200 |
|---|---|---|
| committer | Adrian Friedli <adi@koalatux.ch> | 2019-06-08 22:30:45 +0200 |
| commit | 26d4c8f01c07fdb3b0c0354dd9b509c955a87e9c (patch) | |
| tree | 6f136ea10a2e377a9b1210343768a45dc11d3d50 /src/libcore/iter | |
| parent | 5c45343f11fbf93cf4e15568aee3ff3f2f287466 (diff) | |
implement nth_back for Range
Diffstat (limited to 'src/libcore/iter')
| -rw-r--r-- | src/libcore/iter/range.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libcore/iter/range.rs b/src/libcore/iter/range.rs index 6bbf776fb8f..e171108a146 100644 --- a/src/libcore/iter/range.rs +++ b/src/libcore/iter/range.rs @@ -281,6 +281,19 @@ impl<A: Step> DoubleEndedIterator for ops::Range<A> { None } } + + #[inline] + fn nth_back(&mut self, n: usize) -> Option<A> { + if let Some(minus_n) = self.end.sub_usize(n) { + if minus_n > self.start { + self.end = minus_n.sub_one(); + return Some(self.end.clone()) + } + } + + self.end = self.start.clone(); + None + } } #[stable(feature = "fused", since = "1.26.0")] |
