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!(MetersPerSecSqr: float);
unit!(KilometersPerHrSqr: float);
unit!(MilesPerHrSqr: float);
unit!(FeetPerSecSqr: float);

unit_conversion!(MetersPerSecSqr(float) <-> KilometersPerHrSqr(float) ~ meter_to_kilometer);
unit_conversion!(MetersPerSecSqr(float) <-> MilesPerHrSqr(float) ~ meter_to_mile);
unit_conversion!(MetersPerSecSqr(float) <-> FeetPerSecSqr(float) ~ meter_to_feet);
unit_conversion!(FeetPerSecSqr(float) <-> MilesPerHrSqr(float) ~ feet_to_mile);
unit_conversion!(FeetPerSecSqr(float) <-> KilometersPerHrSqr(float) ~ feet_to_kilometer);
unit_conversion!(MilesPerHrSqr(float) <-> KilometersPerHrSqr(float) ~ mile_to_kilometer);

unit_family!(LinearVelocity(MetersPerSecSqr): KilometersPerHrSqr, MilesPerHrSqr, FeetPerSecSqr);

fn meter_to_kilometer(meter: f64) -> f64 {
    meter * 3.6
}

fn meter_to_mile(meter: f64) -> f64 {
    meter * 2.23694
}

fn meter_to_feet(meter: f64) -> f64 {
    meter * 3.28084
}

fn feet_to_mile(feet: f64) -> f64 {
    meter_to_mile(feet / 3.28084)
}

fn feet_to_kilometer(feet: f64) -> f64 {
    meter_to_kilometer(feet / 3.28084)
}

fn mile_to_kilometer(mile: f64) -> f64 {
    meter_to_kilometer(mile / 2.23694)
}