use core::fmt::Display;
pub use hifitime::Unit as TimeUnit;
#[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Eq, Ord, Default)]
pub enum LengthUnit {
Micrometer,
Millimeter,
Meter,
#[default]
Kilometer,
Megameter,
}
impl LengthUnit {
#[must_use]
pub const fn to_meters(&self) -> f64 {
match self {
Self::Micrometer => 1e6,
Self::Millimeter => 1e3,
Self::Meter => 1.0,
Self::Kilometer => 1e-3,
Self::Megameter => 1e-6,
}
}
#[must_use]
pub const fn from_meters(&self) -> f64 {
match self {
Self::Micrometer => 1e-6,
Self::Millimeter => 1e-3,
Self::Meter => 1.0,
Self::Kilometer => 1e3,
Self::Megameter => 1e6,
}
}
}
impl Display for LengthUnit {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Micrometer => write!(f, "um"),
Self::Millimeter => write!(f, "mm"),
Self::Meter => write!(f, "m"),
Self::Kilometer => write!(f, "km"),
Self::Megameter => write!(f, "Mm"),
}
}
}