Skip to content

Commit

Permalink
slightly reduce op-assign clones
Browse files Browse the repository at this point in the history
  • Loading branch information
cuviper committed Jan 26, 2018
1 parent 2b1a4cd commit 5869894
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,8 @@ mod opassign {

impl<T: Clone + Integer + NumAssign> AddAssign for Ratio<T> {
fn add_assign(&mut self, other: Ratio<T>) {
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();
}
Expand All @@ -396,15 +397,17 @@ mod opassign {

impl<T: Clone + Integer + NumAssign> RemAssign for Ratio<T> {
fn rem_assign(&mut self, other: Ratio<T>) {
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();
}
}

impl<T: Clone + Integer + NumAssign> SubAssign for Ratio<T> {
fn sub_assign(&mut self, other: Ratio<T>) {
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();
}
Expand Down

0 comments on commit 5869894

Please sign in to comment.