diman 0.2.0

Zero-cost compile-time dimensional analysis.
Documentation
use crate as diman;
use crate::dimension;
use crate::unit_system;

#[dimension]
pub struct Dimension {
    pub length: i32,
    pub time: i32,
    pub mass: i32,
    pub temperature: i32,
    pub current: i32,
    pub amount_of_substance: i32,
    pub luminous_intensity: i32,
}

unit_system!(
    Quantity,
    Dimension,
    [
        def Dimensionless = {},
        unit dimensionless = Dimensionless,
        def Length = { length: 1 },
        unit (meters, "m") = Length,
        unit (kilometers, "km") = 1000.0 * meters,
        def Time = { time: 1 },
        unit (seconds, "s") = 1.0 * Time,
        unit (hours, "h") = 3600 * seconds,
        def Velocity = Length / Time,
        unit (meters_per_second, "m/s") = meters / seconds,
        def Area = Length * Length,
        unit (square_meters, "m^2") = meters * meters,
        def Volume = Length * Length * Length,
        unit (cubic_meters, "m^3") = meters * meters * meters,
    ]
);