use crate::config::{Activity, LBD};
pub struct ActivityLBD {
pub activity: Activity,
pub lbd: LBD,
}
impl Default for ActivityLBD {
fn default() -> Self {
ActivityLBD {
activity: 1.0,
lbd: 0,
}
}
}
use std::cmp::Ordering;
impl PartialOrd for ActivityLBD {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
let lbd_comparison = match self.lbd.cmp(&other.lbd) {
Ordering::Less => Ordering::Less,
Ordering::Greater => Ordering::Greater,
Ordering::Equal => match self.activity.partial_cmp(&other.activity) {
None => Ordering::Equal,
Some(comparison) => match comparison {
Ordering::Less => Ordering::Greater,
Ordering::Greater => Ordering::Less,
Ordering::Equal => Ordering::Equal,
},
},
};
Some(lbd_comparison)
}
}
impl PartialEq for ActivityLBD {
fn eq(&self, other: &Self) -> bool {
self.lbd.eq(&other.lbd) && self.activity.eq(&other.activity)
}
}