diff options
-rw-r--r-- | src/lib.rs | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -1,6 +1,6 @@ use num::{One, Zero}; use std::mem; -use std::ops::Add; +use std::ops::AddAssign; #[derive(Debug)] pub struct Fib<T> { @@ -17,13 +17,13 @@ impl<T: Zero + One> Fib<T> { } } -impl<T: Clone + Add<Output = T>> Iterator for Fib<T> { +impl<T: Clone + AddAssign> Iterator for Fib<T> { type Item = T; fn next(&mut self) -> Option<Self::Item> { let res = self.a.clone(); mem::swap(&mut self.a, &mut self.b); - self.b = self.b.clone() + self.a.clone(); + self.b += self.a.clone(); Some(res) } |