From 8f63f9789b12a69723630ae072b6ba63203ed0f6 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Mon, 29 Apr 2013 16:00:27 +1000 Subject: Implement Fractional for Ratio --- src/libstd/num/rational.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/libstd/num') 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 } } +impl + Num for Ratio {} + /* Utils */ impl Round for Ratio { @@ -242,6 +245,12 @@ impl } } +impl Fractional for Ratio { + #[inline] + fn recip(&self) -> Ratio { + Ratio::new_raw(self.denom, self.numer) + } +} /* String conversions */ impl ToStr for Ratio { @@ -446,6 +455,15 @@ mod test { assert_eq!(_3_2.fract(), _1_2); } + #[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) { -- cgit 1.4.1-3-g733a5