diff options
| author | kennytm <kennytm@gmail.com> | 2018-06-23 01:42:29 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-07-13 09:53:37 +0800 |
| commit | b6ea93e46410cccf8d115e57283d1df5968dd0f2 (patch) | |
| tree | 64768540f05eb9e3ecd07ccf01dafa72a25a3356 /src/libcore | |
| parent | d299f03e285f0ea25c4cce8913368fd7500f74ff (diff) | |
| download | rust-b6ea93e46410cccf8d115e57283d1df5968dd0f2.tar.gz rust-b6ea93e46410cccf8d115e57283d1df5968dd0f2.zip | |
Upgrade implementation of StepBy<RangeInclusive<_>>.
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/iter/mod.rs | 8 |
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) } } |
