diff --git a/src/lib.rs b/src/lib.rs index 44fed16..270aec5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -372,7 +372,8 @@ mod opassign { impl AddAssign for Ratio { fn add_assign(&mut self, other: Ratio) { - self.numer = (self.numer.clone() * other.denom.clone()).add(self.denom.clone() * other.numer); + self.numer *= other.denom.clone(); + self.numer += self.denom.clone() * other.numer; self.denom *= other.denom; self.reduce(); } @@ -396,7 +397,8 @@ mod opassign { impl RemAssign for Ratio { fn rem_assign(&mut self, other: Ratio) { - self.numer = (self.numer.clone() * other.denom.clone()).rem(self.denom.clone() * other.numer); + self.numer *= other.denom.clone(); + self.numer %= self.denom.clone() * other.numer; self.denom *= other.denom; self.reduce(); } @@ -404,7 +406,8 @@ mod opassign { impl SubAssign for Ratio { fn sub_assign(&mut self, other: Ratio) { - self.numer = (self.numer.clone() * other.denom.clone()).sub(self.denom.clone() * other.numer); + self.numer *= other.denom.clone(); + self.numer -= self.denom.clone() * other.numer; self.denom *= other.denom; self.reduce(); }