# time.rs - source
Source of the Rust file `/home/runner/.cargo/git/checkouts/k210-hal-1069b16e3180bc3a/795ac3f/src/time.rs`.
Keywords: rust, rustlang, rust-lang

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68

    //! Time units

    /// Bits per second
    #[derive(Clone, Copy)]
    pub struct Bps(pub u32);

    /// Hertz
    #[derive(Clone, Copy)]
    pub struct Hertz(pub u32);

    /// KiloHertz
    #[derive(Clone, Copy)]
    pub struct KiloHertz(pub u32);

    /// MegaHertz
    #[derive(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)
        }
    }