This will allow for easy creation of storage values like distance or mass, as well as preventing adding grams to feet.
The intent is for these values to be kept in-memory as Mass
or Length
, without having to worry about the unit except for creation of the value, and when accessing it (for display, storage, etc).
This is still a Work-In-Progress. Expect rough-edges, but I am working to smooth them out.
These particular systems are already set up already in dims
, but you can set up your own systems:
```rust use dimscore::unitcreation::*;
use dims_macro;
// You can use this macro to generate a full system.
// It requires a length for use as debug.
measuresystem!(name: LengthSystem, debugunit: FOOT,data_type: f32);
// Allow for conversion between the systems
// Multiple MultiplyBy
and DivideBy
traits can be applied for each MeasureSystem
impl MultiplyBy
measuresystem!(name: AreaSystem, debugunit: SQUAREFOOT,datatype: f32);
impl DivideBy
measuresystem!(name: TemperatureSystem, debugunit: FAHRENHEIT,data_type: f32);
// Set up some units, now
pub const FAHRENHEIT: UnitSimple
This also contains the si_unit!
macro, which will generate a whole set (or individual) SI units with the given info.
TODO: EXAMPLE
This is used to easily generate a new measuring system with used as:
rs
measure_system! {name: Mass, debug_unit: GRAM, data_type: f32}
Expands to (with absolute paths):
```rs
pub struct Mass;
impl MeasureSystem for Mass {
type N = f32;
#[cfg(feature = "str")]
const DEBUG_UNIT: UnitFormat
The DEBUG_UNIT
is how the value will be displayed when debugging. This could be how you want to display it, but that should be specified explicitly by consuming code.
dims
and dims_core
dims
and dims_macro
str
(default) will utilize UnitFormat
and store:
abbr
: Abbreviated unit name (m
or ft
)singular
: Singular name of a unit (metre
or foot
)plural
: Plural name of the unit (metres
or feet
)std
is the default option, and defaults to using the standard library.\
This enables the UnitFormatTrait
(as the functions return String
), but no_std
can still be used with str
(see below) to store the unit name info.