@@ -12,6 +12,15 @@ use core::iter::*;
12
12
use core:: { i8, i16, isize} ;
13
13
use core:: usize;
14
14
15
+ // FIXME #27741: This is here to simplify calling Iterator::step_by. Remove
16
+ // once Range::step_by is completely gone (not just deprecated).
17
+ trait IterEx : Sized {
18
+ fn iter_step_by ( self , n : usize ) -> StepBy < Self > ;
19
+ }
20
+ impl < I : Iterator > IterEx for I {
21
+ fn iter_step_by ( self , n : usize ) -> StepBy < Self > { self . step_by ( n) }
22
+ }
23
+
15
24
#[ test]
16
25
fn test_lt ( ) {
17
26
let empty: [ isize ; 0 ] = [ ] ;
@@ -67,7 +76,7 @@ fn test_multi_iter() {
67
76
68
77
#[ test]
69
78
fn test_counter_from_iter ( ) {
70
- let it = ( 0 ..) . step_by ( 5 ) . take ( 10 ) ;
79
+ let it = ( 0 ..) . iter_step_by ( 5 ) . take ( 10 ) ;
71
80
let xs: Vec < isize > = FromIterator :: from_iter ( it) ;
72
81
assert_eq ! ( xs, [ 0 , 5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 ] ) ;
73
82
}
@@ -85,7 +94,7 @@ fn test_iterator_chain() {
85
94
}
86
95
assert_eq ! ( i, expected. len( ) ) ;
87
96
88
- let ys = ( 30 ..) . step_by ( 10 ) . take ( 4 ) ;
97
+ let ys = ( 30 ..) . iter_step_by ( 10 ) . take ( 4 ) ;
89
98
let it = xs. iter ( ) . cloned ( ) . chain ( ys) ;
90
99
let mut i = 0 ;
91
100
for x in it {
@@ -147,15 +156,13 @@ fn test_iterator_chain_find() {
147
156
#[ test]
148
157
fn test_iterator_step_by ( ) {
149
158
// Identity
150
- // Replace with (0..).step_by(1) after Range::step_by gets removed
151
- let mut it = Iterator :: step_by ( ( 0 ..) , 1 ) . take ( 3 ) ;
159
+ let mut it = ( 0 ..) . iter_step_by ( 1 ) . take ( 3 ) ;
152
160
assert_eq ! ( it. next( ) , Some ( 0 ) ) ;
153
161
assert_eq ! ( it. next( ) , Some ( 1 ) ) ;
154
162
assert_eq ! ( it. next( ) , Some ( 2 ) ) ;
155
163
assert_eq ! ( it. next( ) , None ) ;
156
164
157
- // Replace with (0..).step_by(3) after Range::step_by gets removed
158
- let mut it = Iterator :: step_by ( ( 0 ..) , 3 ) . take ( 4 ) ;
165
+ let mut it = ( 0 ..) . iter_step_by ( 3 ) . take ( 4 ) ;
159
166
assert_eq ! ( it. next( ) , Some ( 0 ) ) ;
160
167
assert_eq ! ( it. next( ) , Some ( 3 ) ) ;
161
168
assert_eq ! ( it. next( ) , Some ( 6 ) ) ;
@@ -166,8 +173,7 @@ fn test_iterator_step_by() {
166
173
#[ test]
167
174
#[ should_panic]
168
175
fn test_iterator_step_by_zero ( ) {
169
- // Replace with (0..).step_by(0) after Range::step_by gets removed
170
- let mut it = Iterator :: step_by ( ( 0 ..) , 0 ) ;
176
+ let mut it = ( 0 ..) . iter_step_by ( 0 ) ;
171
177
it. next ( ) ;
172
178
}
173
179
@@ -246,7 +252,7 @@ fn test_iterator_step_by_size_hint() {
246
252
247
253
#[ test]
248
254
fn test_filter_map ( ) {
249
- let it = ( 0 ..) . step_by ( 1 ) . take ( 10 )
255
+ let it = ( 0 ..) . iter_step_by ( 1 ) . take ( 10 )
250
256
. filter_map ( |x| if x % 2 == 0 { Some ( x* x) } else { None } ) ;
251
257
assert_eq ! ( it. collect:: <Vec <usize >>( ) , [ 0 * 0 , 2 * 2 , 4 * 4 , 6 * 6 , 8 * 8 ] ) ;
252
258
}
@@ -648,7 +654,7 @@ fn test_iterator_scan() {
648
654
fn test_iterator_flat_map ( ) {
649
655
let xs = [ 0 , 3 , 6 ] ;
650
656
let ys = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ;
651
- let it = xs. iter ( ) . flat_map ( |& x| ( x..) . step_by ( 1 ) . take ( 3 ) ) ;
657
+ let it = xs. iter ( ) . flat_map ( |& x| ( x..) . iter_step_by ( 1 ) . take ( 3 ) ) ;
652
658
let mut i = 0 ;
653
659
for x in it {
654
660
assert_eq ! ( x, ys[ i] ) ;
@@ -674,13 +680,13 @@ fn test_inspect() {
674
680
#[ test]
675
681
fn test_cycle ( ) {
676
682
let cycle_len = 3 ;
677
- let it = ( 0 ..) . step_by ( 1 ) . take ( cycle_len) . cycle ( ) ;
683
+ let it = ( 0 ..) . iter_step_by ( 1 ) . take ( cycle_len) . cycle ( ) ;
678
684
assert_eq ! ( it. size_hint( ) , ( usize :: MAX , None ) ) ;
679
685
for ( i, x) in it. take ( 100 ) . enumerate ( ) {
680
686
assert_eq ! ( i % cycle_len, x) ;
681
687
}
682
688
683
- let mut it = ( 0 ..) . step_by ( 1 ) . take ( 0 ) . cycle ( ) ;
689
+ let mut it = ( 0 ..) . iter_step_by ( 1 ) . take ( 0 ) . cycle ( ) ;
684
690
assert_eq ! ( it. size_hint( ) , ( 0 , Some ( 0 ) ) ) ;
685
691
assert_eq ! ( it. next( ) , None ) ;
686
692
}
@@ -759,7 +765,7 @@ fn test_iterator_min() {
759
765
760
766
#[ test]
761
767
fn test_iterator_size_hint ( ) {
762
- let c = ( 0 ..) . step_by ( 1 ) ;
768
+ let c = ( 0 ..) . iter_step_by ( 1 ) ;
763
769
let v: & [ _ ] = & [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ;
764
770
let v2 = & [ 10 , 11 , 12 ] ;
765
771
let vi = v. iter ( ) ;
@@ -1081,6 +1087,8 @@ fn test_range() {
1081
1087
1082
1088
#[ test]
1083
1089
fn test_range_step ( ) {
1090
+ #![ allow( deprecated) ]
1091
+
1084
1092
assert_eq ! ( ( 0 ..20 ) . step_by( 5 ) . collect:: <Vec <isize >>( ) , [ 0 , 5 , 10 , 15 ] ) ;
1085
1093
assert_eq ! ( ( 20 ..0 ) . step_by( -5 ) . collect:: <Vec <isize >>( ) , [ 20 , 15 , 10 , 5 ] ) ;
1086
1094
assert_eq ! ( ( 20 ..0 ) . step_by( -6 ) . collect:: <Vec <isize >>( ) , [ 20 , 14 , 8 , 2 ] ) ;
0 commit comments