diff options
Diffstat (limited to 'src/libstd/num/rational.rs')
| -rw-r--r-- | src/libstd/num/rational.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/libstd/num/rational.rs b/src/libstd/num/rational.rs index 34308988fa5..a7c170c1cd6 100644 --- a/src/libstd/num/rational.rs +++ b/src/libstd/num/rational.rs @@ -203,6 +203,9 @@ impl<T: Copy + Num + Ord> } } +impl<T: Copy + Num + Ord> + Num for Ratio<T> {} + /* Utils */ impl<T: Copy + Num + Ord> Round for Ratio<T> { @@ -242,6 +245,12 @@ impl<T: Copy + Num + Ord> } } +impl<T: Copy + Num + Ord> Fractional for Ratio<T> { + #[inline] + fn recip(&self) -> Ratio<T> { + Ratio::new_raw(self.denom, self.numer) + } +} /* String conversions */ impl<T: ToStr> ToStr for Ratio<T> { @@ -447,6 +456,15 @@ mod test { } #[test] + fn test_recip() { + assert_eq!(_1 * _1.recip(), _1); + assert_eq!(_2 * _2.recip(), _1); + assert_eq!(_1_2 * _1_2.recip(), _1); + assert_eq!(_3_2 * _3_2.recip(), _1); + assert_eq!(_neg1_2 * _neg1_2.recip(), _1); + } + + #[test] fn test_to_from_str() { fn test(r: Rational, s: ~str) { assert_eq!(FromStr::from_str(s), Some(r)); |
