about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorkennytm <kennytm@gmail.com>2018-06-23 01:42:29 +0800
committerkennytm <kennytm@gmail.com>2018-07-13 09:53:37 +0800
commitb6ea93e46410cccf8d115e57283d1df5968dd0f2 (patch)
tree64768540f05eb9e3ecd07ccf01dafa72a25a3356 /src/libcore
parentd299f03e285f0ea25c4cce8913368fd7500f74ff (diff)
downloadrust-b6ea93e46410cccf8d115e57283d1df5968dd0f2.tar.gz
rust-b6ea93e46410cccf8d115e57283d1df5968dd0f2.zip
Upgrade implementation of StepBy<RangeInclusive<_>>.
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/iter/mod.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/libcore/iter/mod.rs b/src/libcore/iter/mod.rs
index 86b297557dd..32134783516 100644
--- a/src/libcore/iter/mod.rs
+++ b/src/libcore/iter/mod.rs
@@ -787,17 +787,19 @@ where
     #[inline]
     fn spec_next(&mut self) -> Option<Self::Item> {
         self.first_take = false;
-        if !(self.iter.start <= self.iter.end) {
+        if self.iter.is_empty() {
+            self.iter.is_iterating = Some(false);
             return None;
         }
         // add 1 to self.step to get original step size back
         // it was decremented for the general case on construction
         if let Some(n) = self.iter.start.add_usize(self.step+1) {
+            self.iter.is_iterating = Some(n <= self.iter.end);
             let next = mem::replace(&mut self.iter.start, n);
             Some(next)
         } else {
-            let last = self.iter.start.replace_one();
-            self.iter.end.replace_zero();
+            let last = self.iter.start.clone();
+            self.iter.is_iterating = Some(false);
             Some(last)
         }
     }