struct MyIter {
current: i32,
max: i32,
}
impl MyIter {
fn new(max: i32) -> MyIter {
MyIter {
current: 0,
max,
}
}
}
impl Iterator for MyIter {
type Item = i32;
fn next(&mut self) -> Option<Self::Item> {
if self.current >= self.max {
return None;
}
let v = self.current;
self.current += 1;
Some(v)
}
}
fn main() {
let v = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let n: i32 = v.iter().sum();
println!("{}", n);
println!("{:?}", v.iter().map(|&x| x + 1).collect::<Vec<_>>());
let n: i32 = MyIter::new(10).zip(MyIter::new(100).skip(10))
.map(|(x, y)| x * y)
.filter(|x| x % 3 == 0)
.sum();
println!("{}", n);
}