#[derive(Clone, Copy)]
pub struct Hertz(pub u32);
#[derive(Clone, Copy)]
pub struct KiloHertz(pub u32);
#[derive(Clone, Copy)]
pub struct MegaHertz(pub u32);
pub trait U32Ext {
fn hz(self) -> Hertz;
fn khz(self) -> KiloHertz;
fn mhz(self) -> MegaHertz;
fn ms(self) -> MilliSeconds;
fn us(self) -> MicroSeconds;
fn bps(self) -> Bps;
}
impl U32Ext for u32 {
fn hz(self) -> Hertz {
Hertz(self)
}
fn khz(self) -> KiloHertz {
KiloHertz(self)
}
fn mhz(self) -> MegaHertz {
MegaHertz(self)
}
fn ms(self) -> MilliSeconds {
MilliSeconds(self)
}
fn us(self) -> MicroSeconds {
MicroSeconds(self)
}
fn bps(self) -> Bps {
Bps(self)
}
}
impl Into<Hertz> for KiloHertz {
fn into(self) -> Hertz {
Hertz(self.0 * 1_000)
}
}
impl Into<Hertz> for MegaHertz {
fn into(self) -> Hertz {
Hertz(self.0 * 1_000_000)
}
}
impl Into<KiloHertz> for MegaHertz {
fn into(self) -> KiloHertz {
KiloHertz(self.0 * 1_000)
}
}
pub struct MilliSeconds(pub u32);
pub struct MicroSeconds(pub u32);
impl Into<MicroSeconds> for MilliSeconds {
fn into(self) -> MicroSeconds {
MicroSeconds(self.0 * 1_000)
}
}
pub struct Bps(pub u32);