Skip to content

Commit d38fa91

Browse files
Rollup merge of rust-lang#42310 - scottmcm:deprecate-range-stepby, r=alexcrichton
Deprecate range-specific `step_by` Deprecation attributes and test updates only. Was replaced by an any-iterator version in rust-lang#41439 Last follow-up (this release) to rust-lang#42110 (comment) r? @alexcrichton
2 parents 4ed2eda + 15dff84 commit d38fa91

File tree

5 files changed

+45
-15
lines changed

5 files changed

+45
-15
lines changed

src/libcollections/tests/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
#![feature(collections)]
1717
#![feature(const_fn)]
1818
#![feature(exact_size_is_empty)]
19+
#![feature(iterator_step_by)]
1920
#![feature(pattern)]
2021
#![feature(placement_in_syntax)]
2122
#![feature(rand)]
2223
#![feature(splice)]
23-
#![feature(step_by)]
2424
#![feature(str_escape)]
2525
#![feature(test)]
2626
#![feature(unboxed_closures)]

src/libcollections/tests/vec_deque.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,8 @@ fn test_from_iter() {
510510
let u: Vec<_> = deq.iter().cloned().collect();
511511
assert_eq!(u, v);
512512

513-
let seq = (0..).step_by(2).take(256);
513+
// FIXME #27741: Remove `.skip(0)` when Range::step_by is fully removed
514+
let seq = (0..).skip(0).step_by(2).take(256);
514515
let deq: VecDeque<_> = seq.collect();
515516
for (i, &x) in deq.iter().enumerate() {
516517
assert_eq!(2 * i, x);

src/libcore/iter/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,9 @@ pub use self::iterator::Iterator;
313313
pub use self::range::Step;
314314
#[unstable(feature = "step_by", reason = "recent addition",
315315
issue = "27741")]
316+
#[rustc_deprecated(since = "1.19.0",
317+
reason = "replaced by `iter::StepBy`")]
318+
#[allow(deprecated)]
316319
pub use self::range::StepBy as DeprecatedStepBy;
317320

318321
#[stable(feature = "rust1", since = "1.0.0")]

src/libcore/iter/range.rs

+18
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,9 @@ step_impl_no_between!(u128 i128);
252252
#[derive(Clone, Debug)]
253253
#[unstable(feature = "step_by", reason = "recent addition",
254254
issue = "27741")]
255+
#[rustc_deprecated(since = "1.19.0",
256+
reason = "replaced by `iter::StepBy`")]
257+
#[allow(deprecated)]
255258
pub struct StepBy<A, R> {
256259
step_by: A,
257260
range: R,
@@ -272,6 +275,9 @@ impl<A: Step> ops::RangeFrom<A> {
272275
/// ```
273276
#[unstable(feature = "step_by", reason = "recent addition",
274277
issue = "27741")]
278+
#[rustc_deprecated(since = "1.19.0",
279+
reason = "replaced by `Iterator::step_by`")]
280+
#[allow(deprecated)]
275281
pub fn step_by(self, by: A) -> StepBy<A, Self> {
276282
StepBy {
277283
step_by: by,
@@ -297,6 +303,9 @@ impl<A: Step> ops::Range<A> {
297303
/// ```
298304
#[unstable(feature = "step_by", reason = "recent addition",
299305
issue = "27741")]
306+
#[rustc_deprecated(since = "1.19.0",
307+
reason = "replaced by `Iterator::step_by`")]
308+
#[allow(deprecated)]
300309
pub fn step_by(self, by: A) -> StepBy<A, Self> {
301310
StepBy {
302311
step_by: by,
@@ -321,6 +330,9 @@ impl<A: Step> ops::RangeInclusive<A> {
321330
/// ```
322331
#[unstable(feature = "step_by", reason = "recent addition",
323332
issue = "27741")]
333+
#[rustc_deprecated(since = "1.19.0",
334+
reason = "replaced by `Iterator::step_by`")]
335+
#[allow(deprecated)]
324336
pub fn step_by(self, by: A) -> StepBy<A, Self> {
325337
StepBy {
326338
step_by: by,
@@ -331,6 +343,7 @@ impl<A: Step> ops::RangeInclusive<A> {
331343

332344
#[unstable(feature = "step_by", reason = "recent addition",
333345
issue = "27741")]
346+
#[allow(deprecated)]
334347
impl<A> Iterator for StepBy<A, ops::RangeFrom<A>> where
335348
A: Clone,
336349
for<'a> &'a A: Add<&'a A, Output = A>
@@ -351,11 +364,13 @@ impl<A> Iterator for StepBy<A, ops::RangeFrom<A>> where
351364
}
352365

353366
#[unstable(feature = "fused", issue = "35602")]
367+
#[allow(deprecated)]
354368
impl<A> FusedIterator for StepBy<A, ops::RangeFrom<A>>
355369
where A: Clone, for<'a> &'a A: Add<&'a A, Output = A> {}
356370

357371
#[unstable(feature = "step_by", reason = "recent addition",
358372
issue = "27741")]
373+
#[allow(deprecated)]
359374
impl<A: Step + Clone> Iterator for StepBy<A, ops::Range<A>> {
360375
type Item = A;
361376

@@ -393,11 +408,13 @@ impl<A: Step + Clone> Iterator for StepBy<A, ops::Range<A>> {
393408
}
394409

395410
#[unstable(feature = "fused", issue = "35602")]
411+
#[allow(deprecated)]
396412
impl<A: Step + Clone> FusedIterator for StepBy<A, ops::Range<A>> {}
397413

398414
#[unstable(feature = "inclusive_range",
399415
reason = "recently added, follows RFC",
400416
issue = "28237")]
417+
#[allow(deprecated)]
401418
impl<A: Step + Clone> Iterator for StepBy<A, ops::RangeInclusive<A>> {
402419
type Item = A;
403420

@@ -437,6 +454,7 @@ impl<A: Step + Clone> Iterator for StepBy<A, ops::RangeInclusive<A>> {
437454
}
438455

439456
#[unstable(feature = "fused", issue = "35602")]
457+
#[allow(deprecated)]
440458
impl<A: Step + Clone> FusedIterator for StepBy<A, ops::RangeInclusive<A>> {}
441459

442460
macro_rules! range_exact_iter_impl {

src/libcore/tests/iter.rs

+21-13
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+
// 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+
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)