Crate staticfraction [] [src]

Static fractions are generalized fixed-point numbers. They can scale a compactly stored (eg. u8 typed) mantissa to any fractional range expressible by a fraction of a more expressive (eg. u32) fraction.

They are useful not only for accessing stored sensor data without manually following the operations to convert them into a standard unit, but should also be usable in APIs of embedded systems, especially where measurements are post-processed in a fashion known at compile time, which can then be simplified by the compiler.

For example, when a check like

if get_system_voltage() < 3.1 { prinln!("Undervoltage warning!"); }

should finally be optimizable at compile time into an integer comparison against the value read from a hardware device without the user of the API having to know the constants involved explicitly.

A note on generic names: The S parameter always indicates with which data type the numerator is *s*tored. The C parameter always indicates with which data type *c*alculations happen, which is also the type of the stored denominator. The D parameter indicates the StaticFractionDescription that holds the numerator scaling and the denominator.

Structs

StaticFraction

Stored numeric datum that is, for all mathematical operations, seen under the transformation described by D.

Traits

HasOverflowingMul
StaticFractionDescription

Description of transformation parameters