1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use ad_hoc_iterator::{iterate, iterator_from};
fn count_to(n: usize) -> impl Iterator<Item = usize> {
let mut i = 0;
iterate! {
if i < n {
i += 1;
Some(i-1)
} else {
None
}
}
}
fn count_from_to(n: usize, m: usize) -> impl Iterator<Item = usize> {
let mut i = n;
iterator_from(move || {
if i < m {
i += 1;
Some(i - 1)
} else {
None
}
})
}
fn main() {
for i in count_to(10) {
println!("{}", i);
}
println!("---");
for i in count_from_to(5, 15) {
println!("{}", i);
}
}