@@ -1790,17 +1790,17 @@ pub fn range_inclusive<A: Add<A, A> + Ord + Clone + One>(start: A, stop: A) -> R
1790
1790
RangeInclusive { range : range ( start, stop) , done : false }
1791
1791
}
1792
1792
1793
- impl < A : Add < A , A > + Ord + Clone > Iterator < A > for RangeInclusive < A > {
1793
+ impl < A : Add < A , A > + Eq + Ord + Clone > Iterator < A > for RangeInclusive < A > {
1794
1794
#[ inline]
1795
1795
fn next ( & mut self ) -> Option < A > {
1796
1796
match self . range . next ( ) {
1797
1797
Some ( x) => Some ( x) ,
1798
1798
None => {
1799
- if self . done {
1800
- None
1801
- } else {
1799
+ if !self . done && self . range . state == self . range . stop {
1802
1800
self . done = true ;
1803
1801
Some ( self . range . stop . clone ( ) )
1802
+ } else {
1803
+ None
1804
1804
}
1805
1805
}
1806
1806
}
@@ -2712,6 +2712,8 @@ mod tests {
2712
2712
fn test_range_inclusive ( ) {
2713
2713
assert_eq ! ( range_inclusive( 0 i, 5 ) . collect:: <~[ int] >( ) , ~[ 0 i, 1 , 2 , 3 , 4 , 5 ] ) ;
2714
2714
assert_eq ! ( range_inclusive( 0 i, 5 ) . invert( ) . collect:: <~[ int] >( ) , ~[ 5 i, 4 , 3 , 2 , 1 , 0 ] ) ;
2715
+ assert_eq ! ( range_inclusive( 200 , -5 ) . collect:: <~[ int] >( ) , ~[ ] ) ;
2716
+ assert_eq ! ( range_inclusive( 200 , 200 ) . collect:: <~[ int] >( ) , ~[ 200 ] ) ;
2715
2717
}
2716
2718
2717
2719
#[ test]
@@ -2720,6 +2722,8 @@ mod tests {
2720
2722
assert_eq ! ( range_step( 20 i, 0 , -5 ) . collect:: <~[ int] >( ) , ~[ 20 , 15 , 10 , 5 ] ) ;
2721
2723
assert_eq ! ( range_step( 20 i, 0 , -6 ) . collect:: <~[ int] >( ) , ~[ 20 , 14 , 8 , 2 ] ) ;
2722
2724
assert_eq ! ( range_step( 200u8 , 255 , 50 ) . collect:: <~[ u8 ] >( ) , ~[ 200u8 , 250 ] ) ;
2725
+ assert_eq ! ( range_step( 200 , -5 , 1 ) . collect:: <~[ int] >( ) , ~[ ] ) ;
2726
+ assert_eq ! ( range_step( 200 , 200 , 1 ) . collect:: <~[ int] >( ) , ~[ ] ) ;
2723
2727
}
2724
2728
2725
2729
#[ test]
@@ -2728,6 +2732,8 @@ mod tests {
2728
2732
assert_eq ! ( range_step_inclusive( 20 i, 0 , -5 ) . collect:: <~[ int] >( ) , ~[ 20 , 15 , 10 , 5 , 0 ] ) ;
2729
2733
assert_eq ! ( range_step_inclusive( 20 i, 0 , -6 ) . collect:: <~[ int] >( ) , ~[ 20 , 14 , 8 , 2 ] ) ;
2730
2734
assert_eq ! ( range_step_inclusive( 200u8 , 255 , 50 ) . collect:: <~[ u8 ] >( ) , ~[ 200u8 , 250 ] ) ;
2735
+ assert_eq ! ( range_step_inclusive( 200 , -5 , 1 ) . collect:: <~[ int] >( ) , ~[ ] ) ;
2736
+ assert_eq ! ( range_step_inclusive( 200 , 200 , 1 ) . collect:: <~[ int] >( ) , ~[ 200 ] ) ;
2731
2737
}
2732
2738
2733
2739
#[ test]
0 commit comments