about summary refs log tree commit diff
diff options
context:
space:
mode:
authorkadmin <julianknodt@gmail.com>2021-01-05 01:59:39 +0000
committerkadmin <julianknodt@gmail.com>2021-01-08 08:05:31 +0000
commitfb8cc7bd99b10b6e219d5736da2bfaae68f964c9 (patch)
treeea5911022ce8228b6d30a50bd975709e13cf2628
parent9155a9dae522bbedd42b4a11366d8157da0614ec (diff)
downloadrust-fb8cc7bd99b10b6e219d5736da2bfaae68f964c9.tar.gz
rust-fb8cc7bd99b10b6e219d5736da2bfaae68f964c9.zip
Clean up branching in skip
-rw-r--r--library/core/src/iter/adapters/skip.rs10
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]