use std::ops::{Add, Sub};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Seconds(pub i64);
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Minutes(pub i64);
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Hours(pub i64);
impl Add for Seconds {
type Output = Seconds;
fn add(self, rhs: Self) -> Self::Output {
Seconds(self.0 + rhs.0)
}
}
impl Sub for Seconds {
type Output = Seconds;
fn sub(self, rhs: Self) -> Self::Output {
Seconds(self.0 - rhs.0)
}
}
impl Minutes {
pub fn as_seconds(self) -> Seconds {
Seconds(self.0 * 60)
}
}
impl Hours {
pub fn as_seconds(self) -> Seconds {
Seconds(self.0 * 60 * 60)
}
}