frclib-core 0.2.4

A collection of utilities to be used across the FRC in rust ecosystem
Documentation
use crate::{unit, unit_conversion, unit_family};

unit!(Kilogram: float);
unit!(Gram: float);
unit!(Pound: float);
unit!(Ounce: float);

unit_conversion!(Kilogram(float) <-> Gram(float) ~ kilogram_to_gram);
unit_conversion!(Kilogram(float) <-> Pound(float) ~ kilogram_to_pound);
unit_conversion!(Kilogram(float) <-> Ounce(float) ~ kilogram_to_ounce);
unit_conversion!(Gram(float) <-> Pound(float) ~ gram_to_pound);
unit_conversion!(Gram(float) <-> Ounce(float) ~ gram_to_ounce);
unit_conversion!(Pound(float) <-> Ounce(float) ~ pound_to_ounce);

unit_family!(Mass(Kilogram): Gram, Pound, Ounce);

fn kilogram_to_gram(kilogram: f64) -> f64 {
    kilogram * 1000.0
}

fn kilogram_to_pound(kilogram: f64) -> f64 {
    kilogram * 2.20462
}

fn kilogram_to_ounce(kilogram: f64) -> f64 {
    kilogram * 35.274
}

fn gram_to_pound(gram: f64) -> f64 {
    kilogram_to_pound(gram / 1000.0)
}

fn gram_to_ounce(gram: f64) -> f64 {
    kilogram_to_ounce(gram / 1000.0)
}

fn pound_to_ounce(pound: f64) -> f64 {
    kilogram_to_ounce(pound / 2.20462)
}