struct Fibonacci
{
a: u64,
b: u64,
}
impl Fibonacci
{
fn new() -> Self
{
Fibonacci { a: 0, b: 1 }
}
}
impl Iterator for Fibonacci
{
type Item = u64;
fn next(&mut self) -> Option<u64>
{
let value = self.a;
let tmp = self.a + self.b;
self.a = self.b;
self.b = tmp;
Some(value)
}
}
fn main()
{
let mut fib = Fibonacci::new();
while let Some(n) = fib.next() {
if n >= 100 { break; }
print!("{} ", n);
}
}