absolute_unit/
lib.rs

1pub(crate) mod scalar;
2pub(crate) mod unit;
3pub(crate) mod vector;
4
5// References: https://www.ferrisellis.com/content/rust-implementing-units-for-types/#constructing-a-unifying-base-struct-and-trait
6
7// Re-export for macro usage
8pub use anyhow;
9pub use glam;
10
11/// Must be implemented by all quantity types.
12pub trait Quantity {
13    fn f64(&self) -> f64;
14}
15
16pub mod prelude {
17    pub use crate::{
18        arcminutes, arcseconds, astronomical_units, degrees, degrees_per_second,
19        degrees_per_second2, feet, feet2, feet_per_second, feet_per_second2, kelvin, kilograms,
20        kilograms_meter2, kilograms_per_meter3, kilograms_per_second, kilometers, knots, meters,
21        meters2, meters_per_second, meters_per_second2, miles, miles_per_hour, nautical_miles,
22        nautical_miles_per_hour, newton_meters, newtons, pascals, pdl, pounds_force, pounds_mass,
23        pounds_mass_per_second, pounds_per_feet3, pounds_square_foot, radians, radians_per_second,
24        radians_per_second2, scalar,
25        scalar::{
26            acceleration::Acceleration,
27            angle::{Angle, AngleUnit},
28            angular_acceleration::AngularAcceleration,
29            angular_velocity::AngularVelocity,
30            area::Area,
31            density::Density,
32            dynamic_unit::DynamicUnits,
33            force::{Force, ForceUnit},
34            length::{Length, LengthUnit},
35            mass::{Mass, MassUnit},
36            mass_rate::MassRate,
37            pressure::{Pressure, PressureUnit},
38            rotational_inertia::RotationalInertia,
39            temperature::{Temperature, TemperatureUnit},
40            time::{Time, TimeUnit},
41            torque::Torque,
42            velocity::Velocity,
43            velocity_squared::VelocitySquared,
44            volume::Volume,
45        },
46        seconds,
47        unit::{
48            arcminutes::ArcMinutes, arcseconds::ArcSeconds, astronomical_units::AstronomicalUnits,
49            celsius::Celsius, degrees::Degrees, fahrenheit::Fahrenheit, feet::Feet, hours::Hours,
50            kelvin::Kelvin, kilograms::Kilograms, kilometers::Kilometers, meters::Meters,
51            miles::Miles, nautical_miles::NauticalMiles, newtons::Newtons, pascals::Pascals,
52            pounds_force::PoundsForce, pounds_mass::PoundsMass,
53            pounds_square_foot::PoundsSquareFoot, radians::Radians, rankine::Rankine,
54            scalar::Scalar, seconds::Seconds, slugs::Slugs, Unit,
55        },
56        vector::{pt3::Pt3, v3::V3},
57        Quantity,
58    };
59}
60pub use crate::prelude::*;
61
62// For use from macros
63pub use approx;
64pub use num_traits;
65pub use ordered_float;