dimensioned 0.6.0

Compile-time dimensional analysis for various unit systems using Rust's type system. Dimensioned aims to build on Rust's safety features by adding unit safety with no runtime cost. In addition, it aims to be as easy to use as possible, hopefully making things easier for you not just by avoiding bugs but also by making it clear what units things are. Never again should you need to specify units in a comment!
Documentation
use super::*;

pub fn new() -> System {
    System {
        name: "CGS", module: "cgs",
        doc_prelude: "The Gaussian CGS unit system

Note: this system is incomplete. More derived units and constants are coming.

",
        base: base_units!(
            SQRTCM: SqrtCentimeter, sqrtcm;
            SQRTG: SqrtGram, sqrtg;
            S: Second, s, Time;
        ),
        derived: derived_units!(
            CM: Centimeter = SqrtCentimeter * SqrtCentimeter, Length;
            G: Gram = SqrtGram * SqrtGram, Mass;

            CM2: Centimeter2 = Centimeter * Centimeter, Area;
            CM3: Centimeter3 = Centimeter2 * Centimeter, Volume;

            S2: Second2 = Second * Second;
            S3: Second3 = Second2 * Second;
            S4: Second4 = Second3 * Second;

            CMPS: CentimeterPerSecond = Centimeter / Second, Velocity;
            CMPS3: CentimeterPerSecond3 = Centimeter / Second3, Jerk;
            CMPS4: CentimeterPerSecond4 = Centimeter / Second4;

            CM2PS: Centimeter2PerSecond = Centimeter2 / Second;
            CM2PS2: Centimeter2PerSecond2 = Centimeter2 / Second2;
            CM2PS3: Centimeter2PerSecond3 = Centimeter2 / Second3;

            CM3PS: Centimeter3PerSecond = Centimeter3 / Second;
            CM3PS2: Centimeter3PerSecond2 = Centimeter3 / Second2;
            CM3PS3: Centimeter3PerSecond3 = Centimeter3 / Second3;

            GAL: Gal = Centimeter / Second2, Acceleration;
            DYN: Dyne = Gram *  Gal, Force;
            ERG: Erg = Dyne * Centimeter, Energy;
            ERGPS: ErgPerSecond = Erg / Second, Power;
            BA: Barye = Dyne / Centimeter2, Pressure;
            P: Poise = Gram / Centimeter / Second;
            ST: Stokes = Centimeter2 / Second;
            K: Kayser = Unitless / Centimeter, ReciprocalLength;

            STATC: StatCoulomb = SqrtGram * SqrtCentimeter * Centimeter / Second;
            STATA: StatAmpere = StatCoulomb / Second;
            STATV: StatVolt = Erg / StatCoulomb;
        ),
        constants: constants!(
            M: Centimeter = HECTO * CM.value_unsafe, "Meter";
        ),
        fmt: false,
        from: vec![
            "SI",
            "MKS",
        ],
        refl_blacklist: Vec::new(),
    }
}