mod angle;
mod area;
mod grid_length;
mod length;
mod scale;
mod speed;
mod time;
mod volume;
pub use angle::*;
pub use area::*;
pub use grid_length::*;
pub use length::*;
pub use scale::*;
pub use speed::*;
pub use time::*;
pub use volume::*;
#[macro_export]
macro_rules! impl_measure_type {
($name:ident) => {
impl $name {
pub fn new(value: f64, uom: impl Into<String>) -> Self {
Self($crate::model::basic_types::Measure {
uom: uom.into(),
value,
})
}
pub fn value(&self) -> f64 {
self.0.value
}
pub fn uom(&self) -> &str {
&self.0.uom
}
}
impl From<$crate::model::basic_types::Measure> for $name {
fn from(measure: $crate::model::basic_types::Measure) -> Self {
Self(measure)
}
}
impl From<$name> for $crate::model::basic_types::Measure {
fn from(value: $name) -> Self {
value.0
}
}
};
}