tlq-ucum 0.1.10

UCUM (Unified Code for Units of Measure) implementation.
Documentation
#![forbid(unsafe_code)]

mod ast;
mod db;
mod error;
mod parser;
mod quantity;
mod unit;

#[cfg(feature = "ucum-fhir")]
pub mod fhir;

use once_cell::sync::Lazy;

pub use ast::{Atom, Term, UnitExpr};
pub use error::{Error, Result};
pub use parser::{parse, validate};
pub use quantity::{normalize, Quantity, NormalizedQuantity};
pub use unit::{
    compare_decimal_quantities, convert_decimal, convertible, equivalent, DimensionVector, Unit,
    UnitKind,
};

static UCUM_DB: Lazy<db::UcumDb> = Lazy::new(|| {
    db::UcumDb::from_essence_xml(include_str!(
        "../ucum-essence.xml"
    ))
    .expect("failed to load embedded ucum-essence.xml")
});

pub(crate) fn db() -> &'static db::UcumDb {
    &UCUM_DB
}