Skip to content

Commit 0967e24

Browse files
committed
Deprecate Range*::step_by
Changed all the tests except test_range_step to use Iterator::step_by.
1 parent e0cc22b commit 0967e24

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

src/libcore/iter/range.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,8 @@ impl<A: Step> ops::RangeFrom<A> {
272272
/// ```
273273
#[unstable(feature = "step_by", reason = "recent addition",
274274
issue = "27741")]
275+
#[rustc_deprecated(since = "1.19.0",
276+
reason = "replaced by `Iterator::step_by`")]
275277
pub fn step_by(self, by: A) -> StepBy<A, Self> {
276278
StepBy {
277279
step_by: by,
@@ -297,6 +299,8 @@ impl<A: Step> ops::Range<A> {
297299
/// ```
298300
#[unstable(feature = "step_by", reason = "recent addition",
299301
issue = "27741")]
302+
#[rustc_deprecated(since = "1.19.0",
303+
reason = "replaced by `Iterator::step_by`")]
300304
pub fn step_by(self, by: A) -> StepBy<A, Self> {
301305
StepBy {
302306
step_by: by,
@@ -321,6 +325,8 @@ impl<A: Step> ops::RangeInclusive<A> {
321325
/// ```
322326
#[unstable(feature = "step_by", reason = "recent addition",
323327
issue = "27741")]
328+
#[rustc_deprecated(since = "1.19.0",
329+
reason = "replaced by `Iterator::step_by`")]
324330
pub fn step_by(self, by: A) -> StepBy<A, Self> {
325331
StepBy {
326332
step_by: by,

src/libcore/tests/iter.rs

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ use core::iter::*;
1212
use core::{i8, i16, isize};
1313
use core::usize;
1414

15+
// This is here to simplify calling Iterator::step_by. Remove once
16+
// 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+
1524
#[test]
1625
fn test_lt() {
1726
let empty: [isize; 0] = [];
@@ -67,7 +76,7 @@ fn test_multi_iter() {
6776

6877
#[test]
6978
fn test_counter_from_iter() {
70-
let it = (0..).step_by(5).take(10);
79+
let it = (0..).iter_step_by(5).take(10);
7180
let xs: Vec<isize> = FromIterator::from_iter(it);
7281
assert_eq!(xs, [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]);
7382
}
@@ -85,7 +94,7 @@ fn test_iterator_chain() {
8594
}
8695
assert_eq!(i, expected.len());
8796

88-
let ys = (30..).step_by(10).take(4);
97+
let ys = (30..).iter_step_by(10).take(4);
8998
let it = xs.iter().cloned().chain(ys);
9099
let mut i = 0;
91100
for x in it {
@@ -147,15 +156,13 @@ fn test_iterator_chain_find() {
147156
#[test]
148157
fn test_iterator_step_by() {
149158
// 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);
152160
assert_eq!(it.next(), Some(0));
153161
assert_eq!(it.next(), Some(1));
154162
assert_eq!(it.next(), Some(2));
155163
assert_eq!(it.next(), None);
156164

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);
159166
assert_eq!(it.next(), Some(0));
160167
assert_eq!(it.next(), Some(3));
161168
assert_eq!(it.next(), Some(6));
@@ -166,8 +173,7 @@ fn test_iterator_step_by() {
166173
#[test]
167174
#[should_panic]
168175
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);
171177
it.next();
172178
}
173179

@@ -246,7 +252,7 @@ fn test_iterator_step_by_size_hint() {
246252

247253
#[test]
248254
fn test_filter_map() {
249-
let it = (0..).step_by(1).take(10)
255+
let it = (0..).iter_step_by(1).take(10)
250256
.filter_map(|x| if x % 2 == 0 { Some(x*x) } else { None });
251257
assert_eq!(it.collect::<Vec<usize>>(), [0*0, 2*2, 4*4, 6*6, 8*8]);
252258
}
@@ -648,7 +654,7 @@ fn test_iterator_scan() {
648654
fn test_iterator_flat_map() {
649655
let xs = [0, 3, 6];
650656
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));
652658
let mut i = 0;
653659
for x in it {
654660
assert_eq!(x, ys[i]);
@@ -674,13 +680,13 @@ fn test_inspect() {
674680
#[test]
675681
fn test_cycle() {
676682
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();
678684
assert_eq!(it.size_hint(), (usize::MAX, None));
679685
for (i, x) in it.take(100).enumerate() {
680686
assert_eq!(i % cycle_len, x);
681687
}
682688

683-
let mut it = (0..).step_by(1).take(0).cycle();
689+
let mut it = (0..).iter_step_by(1).take(0).cycle();
684690
assert_eq!(it.size_hint(), (0, Some(0)));
685691
assert_eq!(it.next(), None);
686692
}
@@ -759,7 +765,7 @@ fn test_iterator_min() {
759765

760766
#[test]
761767
fn test_iterator_size_hint() {
762-
let c = (0..).step_by(1);
768+
let c = (0..).iter_step_by(1);
763769
let v: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
764770
let v2 = &[10, 11, 12];
765771
let vi = v.iter();
@@ -1081,6 +1087,8 @@ fn test_range() {
10811087

10821088
#[test]
10831089
fn test_range_step() {
1090+
#![allow(deprecated)]
1091+
10841092
assert_eq!((0..20).step_by(5).collect::<Vec<isize>>(), [0, 5, 10, 15]);
10851093
assert_eq!((20..0).step_by(-5).collect::<Vec<isize>>(), [20, 15, 10, 5]);
10861094
assert_eq!((20..0).step_by(-6).collect::<Vec<isize>>(), [20, 14, 8, 2]);

0 commit comments

Comments
 (0)