diff options
| author | kadmin <julianknodt@gmail.com> | 2021-01-05 01:59:39 +0000 |
|---|---|---|
| committer | kadmin <julianknodt@gmail.com> | 2021-01-08 08:05:31 +0000 |
| commit | fb8cc7bd99b10b6e219d5736da2bfaae68f964c9 (patch) | |
| tree | ea5911022ce8228b6d30a50bd975709e13cf2628 | |
| parent | 9155a9dae522bbedd42b4a11366d8157da0614ec (diff) | |
| download | rust-fb8cc7bd99b10b6e219d5736da2bfaae68f964c9.tar.gz rust-fb8cc7bd99b10b6e219d5736da2bfaae68f964c9.zip | |
Clean up branching in skip
| -rw-r--r-- | library/core/src/iter/adapters/skip.rs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/library/core/src/iter/adapters/skip.rs b/library/core/src/iter/adapters/skip.rs index dd5325660c3..e55c7a6bf5d 100644 --- a/library/core/src/iter/adapters/skip.rs +++ b/library/core/src/iter/adapters/skip.rs @@ -1,3 +1,4 @@ +use crate::intrinsics::unlikely; use crate::iter::{adapters::SourceIter, FusedIterator, InPlaceIterable}; use crate::ops::{ControlFlow, Try}; @@ -31,13 +32,10 @@ where #[inline] fn next(&mut self) -> Option<I::Item> { - if self.n == 0 { - self.iter.next() - } else { - let old_n = self.n; - self.n = 0; - self.iter.nth(old_n) + if unlikely(self.n > 0) { + self.iter.nth(crate::mem::take(&mut self.n) - 1); } + self.iter.next() } #[inline] |
