code_games/fibonacci/src/main.rs

38 lines
679 B
Rust
Executable File

fn main() {
let fib_instance = FibItr::default();
println!("{}",
fib_instance
.filter(is_even)
.take_while(|x| *x < 4000000)
.sum::<usize>()
);
}
fn is_even(x: &usize) -> bool {
x % 2 == 0
}
struct FibItr {
index: usize,
prev: usize
}
impl Iterator for FibItr {
type Item = usize;
fn next ( &mut self ) -> Option<usize> {
let result = self.index + self.prev;
self.prev = self.index;
self.index = result;
return Some(result);
}
}
impl Default for FibItr {
fn default() -> Self {
FibItr {
index: 1,
prev: 1
}
}
}