You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.2 KiB
63 lines
1.2 KiB
/// 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) |
|
} |
|
}
|
|
|