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!(MetersPerSecond: float);
unit!(KilometersPerHour: float);
unit!(MilesPerHour: float);
unit!(FeetPerSecond: float);

unit_conversion!(MetersPerSecond(float) <-> KilometersPerHour(float) ~ meter_to_kilometer);
unit_conversion!(MetersPerSecond(float) <-> MilesPerHour(float) ~ meter_to_mile);
unit_conversion!(MetersPerSecond(float) <-> FeetPerSecond(float) ~ meter_to_feet);
unit_conversion!(FeetPerSecond(float) <-> MilesPerHour(float) ~ feet_to_mile_per_hour);
unit_conversion!(FeetPerSecond(float) <-> KilometersPerHour(float) ~ feet_to_kilometer_per_hour);
unit_conversion!(MilesPerHour(float) <-> KilometersPerHour(float) ~ mile_per_hour_to_kilometer_per_hour);

unit_family!(LinearVelocity(MetersPerSecond): KilometersPerHour, MilesPerHour, FeetPerSecond);

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_per_hour(feet: f64) -> f64 {
    meter_to_mile(feet / 3.28084)
}

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

fn mile_per_hour_to_kilometer_per_hour(mile_per_hour: f64) -> f64 {
    meter_to_kilometer(mile_per_hour / 2.23694)
}