danwi 0.4.2

Zero-cost dimensional analysis library with SI units, compile-time checking, and no_std support
Documentation
#![no_std]
#![forbid(unsafe_code)]
#![doc = include_str!("../README.md")]

#[cfg(not(any(feature = "f32", feature = "f64")))]
compile_error!("danwi requires at least one scalar feature: `f32` or `f64`");

pub mod compile_checks;
pub mod dimension;
pub mod quantity;
pub mod scalar;
pub mod unit;

pub use quantity::{Quantity, UnitDisplay, kind};
pub use scalar::Scalar;
pub use unit::{Unit, UnitDef};

#[cfg(feature = "f32")]
pub use unit::si::ext::F32QuantityExt;
#[cfg(feature = "f64")]
pub use unit::si::ext::F64QuantityExt;

#[doc(hidden)]
pub mod __private {
    pub use paste::paste;
}

/// `f32` quantities: the extension trait (as `QuantityExt`), unit
/// `constants`, and `types` aliases.
#[cfg(feature = "f32")]
pub mod f32 {
    pub use crate::{
        F32QuantityExt as QuantityExt, dimension,
        quantity::Quantity,
        scalar::Scalar,
        unit::{
            Unit,
            si::{constants, types::f32 as types},
        },
    };

    /// Standard gravitational acceleration (9.80665 m/s²).
    pub const G_0: Quantity<f32, dimension::Acceleration> = Quantity::from_f32(9.80665);
}

/// `f64` quantities: the extension trait (as `QuantityExt`), unit
/// `constants`, and `types` aliases.
#[cfg(feature = "f64")]
pub mod f64 {
    pub use crate::{
        F64QuantityExt as QuantityExt, dimension,
        quantity::Quantity,
        scalar::Scalar,
        unit::{
            Unit,
            si::{constants, types::f64 as types},
        },
    };

    /// Standard gravitational acceleration (9.80665 m/s²).
    pub const G_0: Quantity<f64, dimension::Acceleration> = Quantity::from_f64(9.80665);
}

/// Glob import for `f64` users: the extension trait, all unit constants,
/// and all `Quantity` type aliases.
#[cfg(feature = "f64")]
pub mod prelude {
    pub use crate::{
        F64QuantityExt as QuantityExt,
        quantity::Quantity,
        scalar::Scalar,
        unit::{
            Unit, UnitDef,
            si::{constants::*, types::f64::*},
        },
    };
}