summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2017-07-06 00:10:40 +0200
committerSimon Sapin <simon.sapin@exyr.org>2017-07-08 08:55:55 +0200
commitd1ec6c22d1895eb42fbf20bd9b577b6a721c6b5f (patch)
tree59e135f2328d41c2b6467c361e3a87576eead4e1 /src/libcore
parent4b2f40dfdf5ff2bcbcc8105246a8c32054c40cb7 (diff)
downloadrust-d1ec6c22d1895eb42fbf20bd9b577b6a721c6b5f.tar.gz
rust-d1ec6c22d1895eb42fbf20bd9b577b6a721c6b5f.zip
Remove Step::steps_between, rename steps_between_by_one to steps_between
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/iter/range.rs61
1 files changed, 10 insertions, 51 deletions
diff --git a/src/libcore/iter/range.rs b/src/libcore/iter/range.rs
index db3fc1155c3..4d6eca06db2 100644
--- a/src/libcore/iter/range.rs
+++ b/src/libcore/iter/range.rs
@@ -27,10 +27,7 @@ pub trait Step: PartialOrd + Sized {
     ///
     /// Returns `None` if it is not possible to calculate `steps_between`
     /// without overflow.
-    fn steps_between(start: &Self, end: &Self, by: &Self) -> Option<usize>;
-
-    /// Same as `steps_between`, but with a `by` of 1
-    fn steps_between_by_one(start: &Self, end: &Self) -> Option<usize>;
+    fn steps_between(start: &Self, end: &Self) -> Option<usize>;
 
     /// Replaces this step with `1`, returning itself
     fn replace_one(&mut self) -> Self;
@@ -53,17 +50,10 @@ macro_rules! step_impl_unsigned {
         impl Step for $t {
             #[inline]
             #[allow(trivial_numeric_casts)]
-            fn steps_between(start: &$t, end: &$t, by: &$t) -> Option<usize> {
-                if *by == 0 { return None; }
+            fn steps_between(start: &$t, end: &$t) -> Option<usize> {
                 if *start < *end {
                     // Note: We assume $t <= usize here
-                    let diff = (*end - *start) as usize;
-                    let by = *by as usize;
-                    if diff % by > 0 {
-                        Some(diff / by + 1)
-                    } else {
-                        Some(diff / by)
-                    }
+                    Some((*end - *start) as usize)
                 } else {
                     Some(0)
                 }
@@ -88,11 +78,6 @@ macro_rules! step_impl_unsigned {
             fn sub_one(&self) -> Self {
                 Sub::sub(*self, 1)
             }
-
-            #[inline]
-            fn steps_between_by_one(start: &Self, end: &Self) -> Option<usize> {
-                Self::steps_between(start, end, &1)
-            }
         }
     )*)
 }
@@ -104,30 +89,14 @@ macro_rules! step_impl_signed {
         impl Step for $t {
             #[inline]
             #[allow(trivial_numeric_casts)]
-            fn steps_between(start: &$t, end: &$t, by: &$t) -> Option<usize> {
-                if *by == 0 { return None; }
-                let diff: usize;
-                let by_u: usize;
-                if *by > 0 {
-                    if *start >= *end {
-                        return Some(0);
-                    }
+            fn steps_between(start: &$t, end: &$t) -> Option<usize> {
+                if *start < *end {
                     // Note: We assume $t <= isize here
                     // Use .wrapping_sub and cast to usize to compute the
                     // difference that may not fit inside the range of isize.
-                    diff = (*end as isize).wrapping_sub(*start as isize) as usize;
-                    by_u = *by as usize;
-                } else {
-                    if *start <= *end {
-                        return Some(0);
-                    }
-                    diff = (*start as isize).wrapping_sub(*end as isize) as usize;
-                    by_u = (*by as isize).wrapping_mul(-1) as usize;
-                }
-                if diff % by_u > 0 {
-                    Some(diff / by_u + 1)
+                    Some((*end as isize).wrapping_sub(*start as isize) as usize)
                 } else {
-                    Some(diff / by_u)
+                    Some(0)
                 }
             }
 
@@ -150,11 +119,6 @@ macro_rules! step_impl_signed {
             fn sub_one(&self) -> Self {
                 Sub::sub(*self, 1)
             }
-
-            #[inline]
-            fn steps_between_by_one(start: &Self, end: &Self) -> Option<usize> {
-                Self::steps_between(start, end, &1)
-            }
         }
     )*)
 }
@@ -166,7 +130,7 @@ macro_rules! step_impl_no_between {
                    issue = "42168")]
         impl Step for $t {
             #[inline]
-            fn steps_between(_a: &$t, _b: &$t, _by: &$t) -> Option<usize> {
+            fn steps_between(_start: &Self, _end: &Self) -> Option<usize> {
                 None
             }
 
@@ -189,11 +153,6 @@ macro_rules! step_impl_no_between {
             fn sub_one(&self) -> Self {
                 Sub::sub(*self, 1)
             }
-
-            #[inline]
-            fn steps_between_by_one(start: &Self, end: &Self) -> Option<usize> {
-                Self::steps_between(start, end, &1)
-            }
         }
     )*)
 }
@@ -259,7 +218,7 @@ impl<A: Step> Iterator for ops::Range<A> {
 
     #[inline]
     fn size_hint(&self) -> (usize, Option<usize>) {
-        match Step::steps_between_by_one(&self.start, &self.end) {
+        match Step::steps_between(&self.start, &self.end) {
             Some(hint) => (hint, Some(hint)),
             None => (0, None)
         }
@@ -344,7 +303,7 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
             return (0, Some(0));
         }
 
-        match Step::steps_between_by_one(&self.start, &self.end) {
+        match Step::steps_between(&self.start, &self.end) {
             Some(hint) => (hint.saturating_add(1), hint.checked_add(1)),
             None => (0, None),
         }