summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index eecdcaf..fbc29e4 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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)
}