ratio: PartialEq, Eq, PartialOrd, Ord
This commit is contained in:
parent
ec82745c6d
commit
260ed0fd5c
@ -175,3 +175,48 @@ macro_rules! impl_ratio_assign_operator {
|
|||||||
impl_ratio_assign_operator!(AddAssign,add_assign);
|
impl_ratio_assign_operator!(AddAssign,add_assign);
|
||||||
impl_ratio_assign_operator!(SubAssign,sub_assign);
|
impl_ratio_assign_operator!(SubAssign,sub_assign);
|
||||||
impl_ratio_assign_operator!(RemAssign,rem_assign);
|
impl_ratio_assign_operator!(RemAssign,rem_assign);
|
||||||
|
|
||||||
|
// Only implement PartialEq<Self>
|
||||||
|
// Rust's operators aren't actually that good
|
||||||
|
|
||||||
|
impl<Num,Den,T> PartialEq for Ratio<Num,Den>
|
||||||
|
where
|
||||||
|
Num:Copy,
|
||||||
|
Den:Copy,
|
||||||
|
Num:core::ops::Mul<Den,Output=T>,
|
||||||
|
T:PartialEq,
|
||||||
|
{
|
||||||
|
#[inline]
|
||||||
|
fn eq(&self,&other:&Self)->bool{
|
||||||
|
(self.num*other.den).eq(&(other.num*self.den))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl<Num,Den> Eq for Ratio<Num,Den>
|
||||||
|
where
|
||||||
|
Ratio<Num,Den>:PartialEq,
|
||||||
|
{}
|
||||||
|
|
||||||
|
impl<Num,Den,T> PartialOrd for Ratio<Num,Den>
|
||||||
|
where
|
||||||
|
Num:Copy,
|
||||||
|
Den:Copy,
|
||||||
|
Num:core::ops::Mul<Den,Output=T>,
|
||||||
|
T:PartialOrd,
|
||||||
|
{
|
||||||
|
#[inline]
|
||||||
|
fn partial_cmp(&self,&other:&Self)->Option<core::cmp::Ordering>{
|
||||||
|
(self.num*other.den).partial_cmp(&(other.num*self.den))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
impl<Num,Den,T> Ord for Ratio<Num,Den>
|
||||||
|
where
|
||||||
|
Num:Copy,
|
||||||
|
Den:Copy,
|
||||||
|
Num:core::ops::Mul<Den,Output=T>,
|
||||||
|
T:Ord,
|
||||||
|
{
|
||||||
|
#[inline]
|
||||||
|
fn cmp(&self,other:&Self)->std::cmp::Ordering{
|
||||||
|
(self.num*other.den).cmp(&(other.num*self.den))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user