@@ -60,9 +60,9 @@ This `for` loop syntax can be applied to any iterator over any type.
60
60
61
61
use clone:: Clone ;
62
62
use cmp;
63
- use cmp:: { PartialEq , PartialOrd , Ord } ;
63
+ use cmp:: { PartialOrd , Ord } ;
64
64
use mem;
65
- use num:: { Zero , One , CheckedAdd , CheckedSub , ToPrimitive , Int } ;
65
+ use num:: { Zero , One , ToPrimitive , Int } ;
66
66
use ops:: { Add , Mul , Sub } ;
67
67
use option:: { Option , Some , None } ;
68
68
use uint;
@@ -1093,7 +1093,7 @@ impl<A, T: Iterator<A>, U: Iterator<A>> Iterator<A> for Chain<T, U> {
1093
1093
let lower = a_lower. saturating_add ( b_lower) ;
1094
1094
1095
1095
let upper = match ( a_upper, b_upper) {
1096
- ( Some ( x) , Some ( y) ) => x. checked_add ( & y) ,
1096
+ ( Some ( x) , Some ( y) ) => x. checked_add ( y) ,
1097
1097
_ => None
1098
1098
} ;
1099
1099
@@ -1415,7 +1415,7 @@ impl<A, T: Iterator<A>> Iterator<A> for Peekable<A, T> {
1415
1415
if self . peeked . is_some ( ) {
1416
1416
let lo = lo. saturating_add ( 1 ) ;
1417
1417
let hi = match hi {
1418
- Some ( x) => x. checked_add ( & 1 ) ,
1418
+ Some ( x) => x. checked_add ( 1 ) ,
1419
1419
None => None
1420
1420
} ;
1421
1421
( lo, hi)
@@ -1680,7 +1680,7 @@ impl<'a, A, T: Iterator<A>, B, U: Iterator<B>> Iterator<B> for FlatMap<'a, A, T,
1680
1680
let ( blo, bhi) = self . backiter . as_ref ( ) . map_or ( ( 0 , Some ( 0 ) ) , |it| it. size_hint ( ) ) ;
1681
1681
let lo = flo. saturating_add ( blo) ;
1682
1682
match ( self . iter . size_hint ( ) , fhi, bhi) {
1683
- ( ( 0 , Some ( 0 ) ) , Some ( a) , Some ( b) ) => ( lo, a. checked_add ( & b) ) ,
1683
+ ( ( 0 , Some ( 0 ) ) , Some ( a) , Some ( b) ) => ( lo, a. checked_add ( b) ) ,
1684
1684
_ => ( lo, None )
1685
1685
}
1686
1686
}
@@ -1946,15 +1946,15 @@ impl<A: Add<A, A> + PartialOrd + Clone + ToPrimitive> Iterator<A> for Range<A> {
1946
1946
// the i64/u64 might lie within their range.
1947
1947
let bound = match self . state . to_i64 ( ) {
1948
1948
Some ( a) => {
1949
- let sz = self . stop . to_i64 ( ) . map ( |b| b. checked_sub ( & a) ) ;
1949
+ let sz = self . stop . to_i64 ( ) . map ( |b| b. checked_sub ( a) ) ;
1950
1950
match sz {
1951
1951
Some ( Some ( bound) ) => bound. to_uint ( ) ,
1952
1952
_ => None ,
1953
1953
}
1954
1954
} ,
1955
1955
None => match self . state . to_u64 ( ) {
1956
1956
Some ( a) => {
1957
- let sz = self . stop . to_u64 ( ) . map ( |b| b. checked_sub ( & a) ) ;
1957
+ let sz = self . stop . to_u64 ( ) . map ( |b| b. checked_sub ( a) ) ;
1958
1958
match sz {
1959
1959
Some ( Some ( bound) ) => bound. to_uint ( ) ,
1960
1960
_ => None
@@ -2024,7 +2024,7 @@ impl<A: Add<A, A> + PartialOrd + Clone + ToPrimitive> Iterator<A> for RangeInclu
2024
2024
} else {
2025
2025
let lo = lo. saturating_add ( 1 ) ;
2026
2026
let hi = match hi {
2027
- Some ( x) => x. checked_add ( & 1 ) ,
2027
+ Some ( x) => x. checked_add ( 1 ) ,
2028
2028
None => None
2029
2029
} ;
2030
2030
( lo, hi)
@@ -2060,18 +2060,17 @@ pub struct RangeStep<A> {
2060
2060
2061
2061
/// Return an iterator over the range [start, stop) by `step`. It handles overflow by stopping.
2062
2062
#[ inline]
2063
- pub fn range_step < A : CheckedAdd + PartialOrd +
2064
- Clone + Zero > ( start : A , stop : A , step : A ) -> RangeStep < A > {
2063
+ pub fn range_step < A : Int > ( start : A , stop : A , step : A ) -> RangeStep < A > {
2065
2064
let rev = step < Zero :: zero ( ) ;
2066
2065
RangeStep { state : start, stop : stop, step : step, rev : rev}
2067
2066
}
2068
2067
2069
- impl < A : CheckedAdd + PartialOrd + Clone > Iterator < A > for RangeStep < A > {
2068
+ impl < A : Int > Iterator < A > for RangeStep < A > {
2070
2069
#[ inline]
2071
2070
fn next ( & mut self ) -> Option < A > {
2072
2071
if ( self . rev && self . state > self . stop ) || ( !self . rev && self . state < self . stop ) {
2073
- let result = self . state . clone ( ) ;
2074
- match self . state . checked_add ( & self . step ) {
2072
+ let result = self . state ;
2073
+ match self . state . checked_add ( self . step ) {
2075
2074
Some ( x) => self . state = x,
2076
2075
None => self . state = self . stop . clone ( )
2077
2076
}
@@ -2094,19 +2093,18 @@ pub struct RangeStepInclusive<A> {
2094
2093
2095
2094
/// Return an iterator over the range [start, stop] by `step`. It handles overflow by stopping.
2096
2095
#[ inline]
2097
- pub fn range_step_inclusive < A : CheckedAdd + PartialOrd + Clone + Zero > ( start : A , stop : A ,
2098
- step : A ) -> RangeStepInclusive < A > {
2096
+ pub fn range_step_inclusive < A : Int > ( start : A , stop : A , step : A ) -> RangeStepInclusive < A > {
2099
2097
let rev = step < Zero :: zero ( ) ;
2100
2098
RangeStepInclusive { state : start, stop : stop, step : step, rev : rev, done : false }
2101
2099
}
2102
2100
2103
- impl < A : CheckedAdd + PartialOrd + Clone + PartialEq > Iterator < A > for RangeStepInclusive < A > {
2101
+ impl < A : Int > Iterator < A > for RangeStepInclusive < A > {
2104
2102
#[ inline]
2105
2103
fn next ( & mut self ) -> Option < A > {
2106
2104
if !self . done && ( ( self . rev && self . state >= self . stop ) ||
2107
2105
( !self . rev && self . state <= self . stop ) ) {
2108
- let result = self . state . clone ( ) ;
2109
- match self . state . checked_add ( & self . step ) {
2106
+ let result = self . state ;
2107
+ match self . state . checked_add ( self . step ) {
2110
2108
Some ( x) => self . state = x,
2111
2109
None => self . done = true
2112
2110
}
0 commit comments