I wish to create an iterator which yields even numbers from a value in reverse order.
This program demonstrates the issue. It reads two integers from command line and prints even numbers between them in decreasing order. It is sufficient to expect min value to be even.
use std::io::{self, BufRead};
fn main() {
// Read numbers
let mut input = io::BufReader::new(io::stdin());
let mut buf = String::new();
input.read_line(&mut buf).unwrap();
let mut split = buf.split(" ");
let min = split.next().unwrap().trim().parse::<i64>().unwrap();
let max = split.next().unwrap().trim().parse::<i64>().unwrap();
// Attempt to generate the iterator
let payload: String = (min..max)
.rev()
.step_by(2)
.map(|x| x.to_string() + " ")
.collect();
println!("{payload}");
}
However, for example input of 2 6
, program yields 5 3
when I would expect the numbers to be 4 2
.
What is the way to create an iterator which would here produce 4 2
as unreversed version does yield 2 4
?