diff options
| author | Adrian Friedli <adi@koalatux.ch> | 2019-04-16 21:40:50 +0200 |
|---|---|---|
| committer | Adrian Friedli <adi@koalatux.ch> | 2019-04-16 21:40:50 +0200 |
| commit | fae2a68ba21d5cdd3557cd01ca18b792b0bcbd67 (patch) | |
| tree | 4b69f44958283d1194c08d59a61469c6e5b1a5b5 /src/libcore | |
| parent | cc2689a2539a28d54d0f0ec029c487aadad724f0 (diff) | |
| download | rust-fae2a68ba21d5cdd3557cd01ca18b792b0bcbd67.tar.gz rust-fae2a68ba21d5cdd3557cd01ca18b792b0bcbd67.zip | |
implement nth_back for Fuse
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/iter/adapters/mod.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libcore/iter/adapters/mod.rs b/src/libcore/iter/adapters/mod.rs index cccd51b5779..f08f2a5ec75 100644 --- a/src/libcore/iter/adapters/mod.rs +++ b/src/libcore/iter/adapters/mod.rs @@ -1790,6 +1790,17 @@ impl<I> DoubleEndedIterator for Fuse<I> where I: DoubleEndedIterator { } #[inline] + default fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item> { + if self.done { + None + } else { + let nth = self.iter.nth_back(n); + self.done = nth.is_none(); + nth + } + } + + #[inline] default fn try_rfold<Acc, Fold, R>(&mut self, init: Acc, fold: Fold) -> R where Self: Sized, Fold: FnMut(Acc, Self::Item) -> R, R: Try<Ok=Acc> { @@ -1878,6 +1889,11 @@ impl<I> DoubleEndedIterator for Fuse<I> } #[inline] + fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item> { + self.iter.nth_back(n) + } + + #[inline] fn try_rfold<Acc, Fold, R>(&mut self, init: Acc, fold: Fold) -> R where Self: Sized, Fold: FnMut(Acc, Self::Item) -> R, R: Try<Ok=Acc> { |
