use std::cmp::Ordering;
#[derive(Debug)]
enum D{
F(f64)
}
fn getnum(s:&D) ->f64{
if let D::F(x) = s{
*x
}else{
panic!("no value");
}
}
impl std::cmp::PartialEq for D {
fn eq(&self, other: &Self) -> bool {
let a = getnum(self);
let b = getnum(other);
if a == b { true }else{ false }
}
}
impl std::cmp::PartialOrd for D {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
let a = getnum(self);
let b = getnum(other);
if a> b{
Some(Ordering::Greater)
}else if a == b {
Some(Ordering::Equal)
}else{
Some(Ordering::Less)
}
}
}
impl std::cmp::PartialEq<i32> for D {
fn eq(&self, other: &i32) -> bool {
let a = getnum(self);
let b = *other as f64;
if a == b {
true
}else{
false
}
}
}
impl std::cmp::PartialOrd<i32> for D {
fn partial_cmp(&self, other: &i32) -> Option<Ordering> {
let a = getnum(self);
let b = *other as f64;
if a> b{
Some(Ordering::Greater)
}else if a == b {
Some(Ordering::Equal)
}else{
Some(Ordering::Less)
}
}
}
fn main(){
let a = D::F(1.4);
let b = 1_i32;
println!("{:?}", a>b);
// if a > b {
// println!("yes");
// }else if a == b{
// println!("equal");
// } else{
// println!("less");
// }
}