/// ```
#[unstable(feature = "step_by", reason = "recent addition",
issue = "27741")]
+ #[rustc_deprecated(since = "1.19.0",
+ reason = "replaced by `Iterator::step_by`")]
pub fn step_by(self, by: A) -> StepBy<A, Self> {
StepBy {
step_by: by,
/// ```
#[unstable(feature = "step_by", reason = "recent addition",
issue = "27741")]
+ #[rustc_deprecated(since = "1.19.0",
+ reason = "replaced by `Iterator::step_by`")]
pub fn step_by(self, by: A) -> StepBy<A, Self> {
StepBy {
step_by: by,
/// ```
#[unstable(feature = "step_by", reason = "recent addition",
issue = "27741")]
+ #[rustc_deprecated(since = "1.19.0",
+ reason = "replaced by `Iterator::step_by`")]
pub fn step_by(self, by: A) -> StepBy<A, Self> {
StepBy {
step_by: by,
use core::{i8, i16, isize};
use core::usize;
+// This is here to simplify calling Iterator::step_by. Remove once
+// Range::step_by is completely gone (not just deprecated).
+trait IterEx: Sized {
+ fn iter_step_by(self, n: usize) -> StepBy<Self>;
+}
+impl<I:Iterator> IterEx for I {
+ fn iter_step_by(self, n: usize) -> StepBy<Self> { self.step_by(n) }
+}
+
#[test]
fn test_lt() {
let empty: [isize; 0] = [];
#[test]
fn test_counter_from_iter() {
- let it = (0..).step_by(5).take(10);
+ let it = (0..).iter_step_by(5).take(10);
let xs: Vec<isize> = FromIterator::from_iter(it);
assert_eq!(xs, [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]);
}
}
assert_eq!(i, expected.len());
- let ys = (30..).step_by(10).take(4);
+ let ys = (30..).iter_step_by(10).take(4);
let it = xs.iter().cloned().chain(ys);
let mut i = 0;
for x in it {
#[test]
fn test_iterator_step_by() {
// Identity
- // Replace with (0..).step_by(1) after Range::step_by gets removed
- let mut it = Iterator::step_by((0..), 1).take(3);
+ let mut it = (0..).iter_step_by(1).take(3);
assert_eq!(it.next(), Some(0));
assert_eq!(it.next(), Some(1));
assert_eq!(it.next(), Some(2));
assert_eq!(it.next(), None);
- // Replace with (0..).step_by(3) after Range::step_by gets removed
- let mut it = Iterator::step_by((0..), 3).take(4);
+ let mut it = (0..).iter_step_by(3).take(4);
assert_eq!(it.next(), Some(0));
assert_eq!(it.next(), Some(3));
assert_eq!(it.next(), Some(6));
#[test]
#[should_panic]
fn test_iterator_step_by_zero() {
- // Replace with (0..).step_by(0) after Range::step_by gets removed
- let mut it = Iterator::step_by((0..), 0);
+ let mut it = (0..).iter_step_by(0);
it.next();
}
#[test]
fn test_filter_map() {
- let it = (0..).step_by(1).take(10)
+ let it = (0..).iter_step_by(1).take(10)
.filter_map(|x| if x % 2 == 0 { Some(x*x) } else { None });
assert_eq!(it.collect::<Vec<usize>>(), [0*0, 2*2, 4*4, 6*6, 8*8]);
}
fn test_iterator_flat_map() {
let xs = [0, 3, 6];
let ys = [0, 1, 2, 3, 4, 5, 6, 7, 8];
- let it = xs.iter().flat_map(|&x| (x..).step_by(1).take(3));
+ let it = xs.iter().flat_map(|&x| (x..).iter_step_by(1).take(3));
let mut i = 0;
for x in it {
assert_eq!(x, ys[i]);
#[test]
fn test_cycle() {
let cycle_len = 3;
- let it = (0..).step_by(1).take(cycle_len).cycle();
+ let it = (0..).iter_step_by(1).take(cycle_len).cycle();
assert_eq!(it.size_hint(), (usize::MAX, None));
for (i, x) in it.take(100).enumerate() {
assert_eq!(i % cycle_len, x);
}
- let mut it = (0..).step_by(1).take(0).cycle();
+ let mut it = (0..).iter_step_by(1).take(0).cycle();
assert_eq!(it.size_hint(), (0, Some(0)));
assert_eq!(it.next(), None);
}
#[test]
fn test_iterator_size_hint() {
- let c = (0..).step_by(1);
+ let c = (0..).iter_step_by(1);
let v: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let v2 = &[10, 11, 12];
let vi = v.iter();
#[test]
fn test_range_step() {
+ #![allow(deprecated)]
+
assert_eq!((0..20).step_by(5).collect::<Vec<isize>>(), [0, 5, 10, 15]);
assert_eq!((20..0).step_by(-5).collect::<Vec<isize>>(), [20, 15, 10, 5]);
assert_eq!((20..0).step_by(-6).collect::<Vec<isize>>(), [20, 14, 8, 2]);