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