diff options
| author | Brendan Zabarauskas <bjzaba@yahoo.com.au> | 2013-04-29 16:00:27 +1000 |
|---|---|---|
| committer | Brendan Zabarauskas <bjzaba@yahoo.com.au> | 2013-04-29 16:00:27 +1000 |
| commit | 8f63f9789b12a69723630ae072b6ba63203ed0f6 (patch) | |
| tree | c97030e807a8bac736a71f40a37c9da8fc0468d6 /src/libstd/num | |
| parent | c9620dc0528866bda3a0d70036af082f45c78e96 (diff) | |
| download | rust-8f63f9789b12a69723630ae072b6ba63203ed0f6.tar.gz rust-8f63f9789b12a69723630ae072b6ba63203ed0f6.zip | |
Implement Fractional for Ratio
Diffstat (limited to 'src/libstd/num')
| -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)); |
