#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
pub struct Timestamp(pub u64);
impl Timestamp {
pub fn from_millis(millis: u64) -> Self {
Self(millis)
}
pub fn as_millis(&self) -> u64 {
self.0
}
pub fn saturating_sub(&self, other: Self) -> u64 {
self.0.saturating_sub(other.0)
}
pub fn add_millis(&self, millis: u64) -> Self {
Self(self.0.saturating_add(millis))
}
}
impl std::ops::Add<u64> for Timestamp {
type Output = Self;
fn add(self, rhs: u64) -> Self::Output {
Self(self.0.saturating_add(rhs))
}
}
impl std::ops::Sub for Timestamp {
type Output = u64;
fn sub(self, rhs: Self) -> Self::Output {
self.0.saturating_sub(rhs.0)
}
}