You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.2 KiB
Rust
64 lines
1.2 KiB
Rust
/// Bits per second
|
|
#[derive(PartialEq, PartialOrd, Clone, Copy)]
|
|
pub struct Bps(pub u32);
|
|
|
|
#[derive(PartialEq, PartialOrd, Clone, Copy)]
|
|
pub struct Hertz(pub u32);
|
|
|
|
#[derive(PartialEq, PartialOrd, Clone, Copy)]
|
|
pub struct KiloHertz(pub u32);
|
|
|
|
#[derive(PartialEq, PartialOrd, Clone, Copy)]
|
|
pub struct MegaHertz(pub u32);
|
|
|
|
/// Extension trait that adds convenience methods to the `u32` type
|
|
pub trait U32Ext {
|
|
/// Wrap in `Bps`
|
|
fn bps(self) -> Bps;
|
|
|
|
/// Wrap in `Hertz`
|
|
fn hz(self) -> Hertz;
|
|
|
|
/// Wrap in `KiloHertz`
|
|
fn khz(self) -> KiloHertz;
|
|
|
|
/// Wrap in `MegaHertz`
|
|
fn mhz(self) -> MegaHertz;
|
|
}
|
|
|
|
impl U32Ext for u32 {
|
|
fn bps(self) -> Bps {
|
|
Bps(self)
|
|
}
|
|
|
|
fn hz(self) -> Hertz {
|
|
Hertz(self)
|
|
}
|
|
|
|
fn khz(self) -> KiloHertz {
|
|
KiloHertz(self)
|
|
}
|
|
|
|
fn mhz(self) -> MegaHertz {
|
|
MegaHertz(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)
|
|
}
|
|
}
|