moredurations 0.1.0

An extension of `std::time::Duration`
Documentation
use std::time::Duration;

/// Extension trait for Duration that adds a bunch more `from` methods
pub trait MoreDurations {
    /// Create a Duration from deciseconds (1 decisecond = 100 milliseconds)
    fn from_decis(deciseconds: u64) -> Duration;

    /// Create a Duration from centiseconds (1 centisecond = 10 milliseconds)
    fn from_centis(centiseconds: u64) -> Duration;

    /// Create a Duration from shakes (1 shake = 10 nanoseconds)
    fn from_shakes(shakes: u64) -> Duration;

    /// Create a Duration from picoseconds (1 picosecond = 0.001 nanoseconds)
    fn from_picos(picoseconds: u64) -> Duration;

    /// Create a Duration from svedbergs (1 svedberg = 100 femtoseconds)
    fn from_sveds(svedbergs: u64) -> Duration;

    /// Create a Duration from femtoseconds (1 femtosecond = 0.000001 nanoseconds)
    fn from_femtos(femtoseconds: u64) -> Duration;

    /// Create a Duration from attoseconds (1 attosecond = 0.000000001 nanoseconds)
    fn from_attos(attoseconds: u64) -> Duration;

    /// Create a Duration from zeptoseconds (1 zeptosecond = 0.000000000001 nanoseconds)
    fn from_zeptos(zeptoseconds: u64) -> Duration;

    /// Create a Duration from yoctoseconds (1 yoctosecond = 0.000000000000001 nanoseconds)
    fn from_yoctos(yoctoseconds: u64) -> Duration;

    /// Create a Duration from rontoseconds (1 rontosecond = 0.000000000000000001 nanoseconds)
    fn from_rontos(rontoseconds: u64) -> Duration;
}

impl MoreDurations for Duration {
    fn from_decis(deciseconds: u64) -> Duration {
        Duration::from_millis(deciseconds * 100)
    }

    fn from_centis(centiseconds: u64) -> Duration {
        Duration::from_millis(centiseconds * 10)
    }

    fn from_shakes(shakes: u64) -> Duration {
        Duration::from_nanos(shakes * 10)
    }

    fn from_picos(picoseconds: u64) -> Duration {
        Duration::from_nanos(picoseconds / 1000)
    }

    fn from_sveds(svedbergs: u64) -> Duration {
        Duration::from_nanos(svedbergs / 10000)
    }

    fn from_femtos(femtoseconds: u64) -> Duration {
        Duration::from_nanos(femtoseconds / 1_000_000)
    }

    fn from_attos(attoseconds: u64) -> Duration {
        Duration::from_nanos(attoseconds / 1_000_000_000)
    }

    fn from_zeptos(zeptoseconds: u64) -> Duration {
        Duration::from_nanos(zeptoseconds / 1_000_000_000_000)
    }

    fn from_yoctos(yoctoseconds: u64) -> Duration {
        Duration::from_nanos(yoctoseconds / 1_000_000_000_000_000)
    }

    fn from_rontos(rontoseconds: u64) -> Duration {
        Duration::from_nanos(rontoseconds / 1_000_000_000_000_000_000)
    }
}