[−][src]Crate yaum
This crate provides type-safe basic scientific units and constants for no_std programs.
Example
use yaum::time::*; use yaum::length::*; use yaum::velocity::*; // Simple arithmetic assert_eq!(1.0 * kph, 1.0 * km / h); assert_eq!(1.0 * km / min, 60.0 * km / h); // Read value in a given unit assert_eq!(60.0, (1.0 * min).s()); assert_eq!(1_000.0, (1.0 * km).m());
Currently supported units:
time: Timefrequency: Frequencylength: Lengthvelocity: Velocity, Accelerationdigital: LSB (least significant bits)
Define custom units and conversions using the impl_unit!, convert_div! and convert_unit! macros.
#[macro_use] extern crate yaum; use yaum::*; use yaum::time::*; yaum::impl_unit!(ByteSize, { B: 1.0, kB: 1024.0, MB: 1024.0 * 1024.0 }); yaum::impl_unit!(BitSize, { b: 1.0, kb: 1024.0, Mb: 1024.0 * 1024.0 }); // define conversion between the two units (1 byte = 8 bits): yaum::convert_unit!(ByteSize, BitSize, 8.0); yaum::impl_unit!(BitSpeed, { bps: 1.0, kbps: 1024.0, Mbps: 1024.0 * 1024.0 }); // define relationship between units (BitSpeed = BitSize/Time) yaum::convert_div!(BitSize, Time, BitSpeed); fn main() { assert_eq!(8.0 * b, (1.0 * B).into()); assert_eq!(1.0 * kbps, 1.0 * kb/s); }
Precision
By default, units are implemented on top of f32. Enable the double_precision feature for f64.
Modules
| angle | |
| conversions | |
| frequency | |
| length | |
| time | |
| velocity |
Macros
| convert_div | Specify the result of division of two types. |
| convert_unit | Specify the conversion factor between two types. |
| impl_unit | Define a unit. Specify units, constants in brackets. |
Type Definitions
| Base | Base type. |