#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]
#[cfg(all(feature = "alloc", not(feature = "std")))]
extern crate alloc;
pub use qtty_core::{
impl_unit_arithmetic_pairs, impl_unit_arithmetic_pairs_between, impl_unit_cross_unit_ops,
impl_unit_cross_unit_ops_between, impl_unit_division_pairs, impl_unit_division_pairs_between,
impl_unit_from_conversions, impl_unit_from_conversions_between, impl_unit_multiplication_pairs,
impl_unit_multiplication_pairs_between,
};
pub use qtty_core::{
Acceleration, AmountOfSubstance, Angular, AngularRate, Area, Capacitance, Charge, Current,
Density, Dimension, Dimensionless, Energy, Exact, Force, Frequency, Illuminance, Inductance,
IntegerScalar, Length, LuminousFlux, LuminousIntensity, MagneticFlux, MagneticFluxDensity,
Mass, Per, Power, Pressure, Prod, Quantity, Quantity32, Quantity64, QuantityI128, QuantityI16,
QuantityI32, QuantityI64, QuantityI8, Real, Resistance, Scalar, Temperature, Time,
Transcendental, Unit, Velocity, Voltage, Volume,
};
#[doc(hidden)]
pub use qtty_core::{Dim, DimDiv, DimMul, UnitDiv, UnitMul, UnitSqrt};
#[cfg(feature = "scalar-rational")]
pub use qtty_core::QuantityRational;
#[cfg(all(feature = "serde", feature = "std"))]
pub use qtty_core::serde_with_unit;
#[cfg(feature = "serde")]
pub use qtty_core::serde_scalar;
pub use qtty_derive::Unit;
#[doc(hidden)]
#[macro_export]
macro_rules! __qtty_invoke_all_inventories {
($cb:path) => {
qtty_core::angular_units!($cb);
qtty_core::length_units!($cb);
qtty_core::time_units!($cb);
qtty_core::mass_units!($cb);
qtty_core::power_units!($cb);
qtty_core::area_units!($cb);
qtty_core::solid_angle_units!($cb);
qtty_core::volume_units!($cb);
qtty_core::acceleration_units!($cb);
qtty_core::force_units!($cb);
qtty_core::energy_units!($cb);
qtty_core::pressure_units!($cb);
qtty_core::temperature_units!($cb);
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __qtty_invoke_optional_inventories {
($cb:path) => {
#[cfg(feature = "astro")]
qtty_core::angular_astro_units!($cb);
#[cfg(feature = "astro")]
qtty_core::length_astro_units!($cb);
#[cfg(feature = "astro")]
qtty_core::length_nominal_units!($cb);
#[cfg(feature = "astro")]
qtty_core::mass_astro_units!($cb);
#[cfg(feature = "astro")]
qtty_core::power_astro_units!($cb);
#[cfg(feature = "astro")]
qtty_core::solid_angle_astro_units!($cb);
#[cfg(feature = "astro")]
qtty_core::time_astro_units!($cb);
#[cfg(feature = "navigation")]
qtty_core::angular_navigation_units!($cb);
#[cfg(feature = "navigation")]
qtty_core::length_navigation_units!($cb);
#[cfg(feature = "land-area")]
qtty_core::area_land_area_units!($cb);
#[cfg(feature = "customary")]
qtty_core::area_customary_units!($cb);
#[cfg(feature = "customary")]
qtty_core::energy_customary_units!($cb);
#[cfg(feature = "customary")]
qtty_core::length_customary_units!($cb);
#[cfg(feature = "customary")]
qtty_core::mass_customary_units!($cb);
#[cfg(feature = "customary")]
qtty_core::power_customary_units!($cb);
#[cfg(feature = "customary")]
qtty_core::pressure_customary_units!($cb);
#[cfg(feature = "customary")]
qtty_core::volume_customary_units!($cb);
#[cfg(feature = "fundamental-physics")]
qtty_core::energy_fundamental_physics_units!($cb);
#[cfg(feature = "fundamental-physics")]
qtty_core::length_fundamental_physics_units!($cb);
#[cfg(feature = "fundamental-physics")]
qtty_core::mass_fundamental_physics_units!($cb);
#[cfg(feature = "fundamental-physics")]
qtty_core::power_fundamental_physics_units!($cb);
#[cfg(feature = "julian-time")]
qtty_core::time_julian_time_units!($cb);
#[cfg(feature = "radiometry")]
qtty_core::radiance_units!($cb);
#[cfg(feature = "radiometry")]
qtty_core::spectral_radiance_units!($cb);
#[cfg(feature = "radiometry")]
qtty_core::photon_radiance_units!($cb);
#[cfg(feature = "radiometry")]
qtty_core::spectral_photon_radiance_units!($cb);
#[cfg(feature = "radiometry")]
qtty_core::inverse_solid_angle_units!($cb);
#[cfg(feature = "photometry")]
qtty_core::candela_units!($cb);
#[cfg(feature = "photometry")]
qtty_core::lumen_units!($cb);
#[cfg(feature = "photometry")]
qtty_core::lux_units!($cb);
#[cfg(feature = "frequency")]
qtty_core::frequency_units!($cb);
#[cfg(feature = "chemistry")]
qtty_core::amount_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::ampere_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::coulomb_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::volt_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::ohm_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::farad_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::henry_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::weber_units!($cb);
#[cfg(feature = "electrical")]
qtty_core::tesla_units!($cb);
#[cfg(feature = "density")]
qtty_core::density_units!($cb);
#[cfg(all(feature = "density", feature = "customary"))]
qtty_core::density_customary_units!($cb);
};
}
pub mod f32;
pub mod f64;
pub mod i128;
pub mod i16;
pub mod i32;
pub mod i64;
pub mod i8;
pub use qtty_core::units::acceleration;
pub use qtty_core::units::angular;
pub use qtty_core::units::area;
pub use qtty_core::units::energy;
pub use qtty_core::units::force;
pub use qtty_core::units::length;
pub use qtty_core::units::mass;
#[cfg(feature = "photometry")]
pub use qtty_core::units::photometry;
pub use qtty_core::units::power;
pub use qtty_core::units::pressure;
#[cfg(feature = "radiometry")]
pub use qtty_core::units::radiometry;
pub use qtty_core::units::solid_angle;
pub use qtty_core::units::temperature;
pub use qtty_core::units::time;
pub use qtty_core::units::volume;
#[cfg(feature = "chemistry")]
pub use qtty_core::units::amount;
#[cfg(feature = "density")]
pub use qtty_core::units::density;
#[cfg(feature = "electrical")]
pub use qtty_core::units::electrical;
#[cfg(feature = "frequency")]
pub use qtty_core::units::frequency;
pub mod unit {
pub use qtty_core::{Per, Prod, Unit, UnitDiv, UnitMul, UnitSqrt};
#[cfg(feature = "navigation")]
pub use qtty_core::units::angular::Gradian;
pub use qtty_core::units::angular::{AngularUnit, Degree, Milliradian, Radian, Turn};
#[cfg(feature = "astro")]
pub use qtty_core::units::angular::{
Arcminute, Arcsecond, HourAngle, MicroArcsecond, MilliArcsecond,
};
#[cfg(feature = "land-area")]
pub use qtty_core::units::area::{Acre, Are, Hectare};
pub use qtty_core::units::area::{
AreaUnit, SquareCentimeter, SquareKilometer, SquareMeter, SquareMillimeter,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::area::{SquareFoot, SquareInch, SquareMile, SquareYard};
#[cfg(feature = "astro")]
pub use qtty_core::units::length::nominal::{
EarthEquatorialRadius, EarthPolarRadius, EarthRadius, JupiterRadius, LunarDistance,
LunarRadius, SolarDiameter, SolarRadius,
};
#[cfg(feature = "astro")]
pub use qtty_core::units::length::{
AstronomicalUnit, Gigaparsec, Kiloparsec, LightYear, Megaparsec, Parsec,
};
pub use qtty_core::units::length::{
Attometer, Centimeter, Decameter, Decimeter, Exameter, Femtometer, Gigameter, Hectometer,
Kilometer, LengthUnit, Megameter, Meter, Micrometer, Millimeter, Nanometer, Petameter,
Picometer, Terameter, Yoctometer, Yottameter, Zeptometer, Zettameter,
};
#[cfg(feature = "fundamental-physics")]
pub use qtty_core::units::length::{
BohrRadius, ClassicalElectronRadius, ElectronReducedComptonWavelength, PlanckLength,
};
#[cfg(feature = "navigation")]
pub use qtty_core::units::length::{
Chain, EarthEquatorialCircumference, EarthMeridionalCircumference, Fathom, Link,
NauticalMile, Rod,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::length::{Foot, Inch, Mile, Yard};
#[cfg(feature = "fundamental-physics")]
pub use qtty_core::units::mass::AtomicMassUnit;
#[cfg(feature = "astro")]
pub use qtty_core::units::mass::SolarMass;
pub use qtty_core::units::mass::{
Attogram, Centigram, Decagram, Decigram, Exagram, Femtogram, Gigagram, Gram, Hectogram,
Kilogram, MassUnit, Megagram, Microgram, Milligram, Nanogram, Petagram, Picogram, Teragram,
Tonne, Yoctogram, Yottagram, Zeptogram, Zettagram,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::mass::{Carat, Grain, LongTon, Ounce, Pound, ShortTon, Stone};
#[cfg(feature = "fundamental-physics")]
pub use qtty_core::units::power::ErgPerSecond;
#[cfg(feature = "astro")]
pub use qtty_core::units::power::SolarLuminosity;
pub use qtty_core::units::power::{
Attowatt, Decawatt, Deciwatt, Exawatt, Femtowatt, Gigawatt, Hectowatt, Kilowatt, Megawatt,
Microwatt, Milliwatt, Nanowatt, Petawatt, Picowatt, PowerUnit, Terawatt, Watt, Yoctowatt,
Yottawatt, Zeptowatt, Zettawatt,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::power::{HorsepowerElectric, HorsepowerMetric};
#[cfg(feature = "astro")]
pub use qtty_core::units::solid_angle::{SquareArcminute, SquareArcsecond};
pub use qtty_core::units::solid_angle::{SquareDegree, SquareMilliradian, Steradian};
pub use qtty_core::units::acceleration::{
AccelerationUnit, MeterPerSecondSquared, StandardGravity,
};
#[cfg(feature = "fundamental-physics")]
pub use qtty_core::units::force::Dyne;
#[cfg(feature = "customary")]
pub use qtty_core::units::force::PoundForce;
pub use qtty_core::units::force::{
ForceUnit, Giganewton, Kilonewton, Meganewton, Micronewton, Millinewton, Newton,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::pressure::{
Atmosphere, InchOfMercury, MillimeterOfMercury, PoundPerSquareInch, Torr,
};
pub use qtty_core::units::pressure::{
Bar, Gigapascal, Hectopascal, Kilopascal, Megapascal, Millipascal, Pascal, PressureUnit,
};
pub use qtty_core::units::temperature::{Kelvin, Rankine, TemperatureUnit};
#[cfg(feature = "radiometry")]
pub use qtty_core::units::radiometry::{
ErgPerSecondSquareCentimeterSteradian, ErgPerSecondSquareCentimeterSteradianAngstrom,
InverseSolidAngleUnit, PhotonPerSquareCentimeterNanosecondSteradian,
PhotonPerSquareCentimeterNanosecondSteradianNanometer,
PhotonPerSquareCentimeterSecondSteradian, PhotonPerSquareCentimeterSecondSteradianAngstrom,
PhotonPerSquareCentimeterSecondSteradianNanometer, PhotonPerSquareMeterSecondSteradian,
PhotonPerSquareMeterSecondSteradianMeter, PhotonRadianceUnit, RadianceUnit,
SpectralPhotonRadianceUnit, SpectralRadianceUnit, WattPerSquareMeterSteradian,
WattPerSquareMeterSteradianMeter, WattPerSquareMeterSteradianNanometer, S10,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::energy::{BritishThermalUnit, Calorie, Kilocalorie, Therm};
#[cfg(feature = "fundamental-physics")]
pub use qtty_core::units::energy::{Electronvolt, Erg, Kiloelectronvolt, Megaelectronvolt};
pub use qtty_core::units::energy::{
EnergyUnit, Gigajoule, Joule, Kilojoule, KilowattHour, Megajoule, Microjoule, Millijoule,
Nanojoule, Picojoule, Terajoule, WattHour,
};
pub use qtty_core::units::time::{
Attosecond, Centisecond, Century, Day, Decade, Decasecond, Decisecond, Femtosecond,
Fortnight, Gigasecond, Hectosecond, Hour, Kilosecond, Megasecond, Microsecond, Millennium,
Millisecond, Minute, Nanosecond, Picosecond, Second, Terasecond, TimeUnit, Week, Year,
};
#[cfg(feature = "julian-time")]
pub use qtty_core::units::time::{JulianCentury, JulianYear};
#[cfg(feature = "astro")]
pub use qtty_core::units::time::{SiderealDay, SiderealYear, SynodicMonth};
pub use qtty_core::units::volume::{
Centiliter, CubicCentimeter, CubicKilometer, CubicMeter, CubicMillimeter, Deciliter, Liter,
Microliter, Milliliter, VolumeUnit,
};
#[cfg(feature = "customary")]
pub use qtty_core::units::volume::{CubicFoot, CubicInch, UsFluidOunce, UsGallon};
#[cfg(feature = "photometry")]
pub use qtty_core::units::photometry::{
Candela, Kilolumen, Kilolux, Lumen, Lux, Millilumen, Millilux,
};
#[cfg(feature = "frequency")]
pub use qtty_core::units::frequency::{
FrequencyUnit, Gigahertz, Hertz, Kilohertz, Megahertz, Millihertz, Terahertz,
};
#[cfg(feature = "chemistry")]
pub use qtty_core::units::amount::{
AmountUnit, Kilomole, Micromole, Millimole, Mole, Nanomole,
};
#[cfg(feature = "electrical")]
pub use qtty_core::units::electrical::{
Ampere, Coulomb, Farad, Henry, Kiloampere, Kilocoulomb, Kilohm, Kilovolt, Megaohm,
Megavolt, Microampere, Microcoulomb, Microfarad, Microhenry, Microtesla, Microvolt,
Milliampere, Millicoulomb, Millifarad, Millihenry, Milliohm, Millitesla, Millivolt,
Milliweber, Nanofarad, Ohm, Picofarad, Tesla, Volt, Weber,
};
#[cfg(all(feature = "density", feature = "customary"))]
pub use qtty_core::units::density::PoundPerCubicFoot;
#[cfg(feature = "density")]
pub use qtty_core::units::density::{
DensityUnit, GramPerCubicCentimeter, GramPerMilliliter, KilogramPerCubicMeter,
};
}
pub use unit as units;
pub mod velocity {
pub use qtty_core::units::velocity::{Velocity, VelocityUnit};
}
pub mod angular_rate {
pub use qtty_core::units::angular_rate::{AngularRate, AngularRateUnit};
}
pub mod accel {
pub use qtty_core::units::acceleration::{Accel, AccelerationUnit};
}
macro_rules! _root_alias {
($($unit:ident),+ $(,)?) => {
$(
#[doc = concat!(stringify!($unit), ".")]
pub type $unit<S = f64> = Quantity<unit::$unit, S>;
)+
};
}
__qtty_invoke_all_inventories!(_root_alias);
__qtty_invoke_optional_inventories!(_root_alias);
pub use qtty_core::units::angular::{DEG, RAD};
#[cfg(feature = "astro")]
pub use qtty_core::units::length::{AU, LY};
pub use qtty_core::units::length::{KM, M};
pub use qtty_core::units::time::{DAY, SEC};
pub use accel::Accel;
#[doc(hidden)]
pub mod __private {
#[cfg(all(feature = "alloc", not(feature = "std")))]
pub use alloc::vec::Vec;
#[cfg(feature = "std")]
pub use std::vec::Vec;
}
#[cfg(any(feature = "std", feature = "alloc"))]
#[macro_export]
macro_rules! qtty_vec {
(vec $unit:ty; $($value:expr),* $(,)?) => {
<$crate::__private::Vec<$unit>>::from([$(<$unit>::new($value)),*])
};
($unit:ty; $($value:expr),* $(,)?) => {
[$(<$unit>::new($value)),*]
};
}
#[cfg(not(any(feature = "std", feature = "alloc")))]
#[macro_export]
macro_rules! qtty_vec {
(vec $unit:ty; $($value:expr),* $(,)?) => {
compile_error!(
"`qtty::qtty_vec!(vec ...)` requires the `std` or `alloc` feature. \
Use `qtty::qtty_vec!(Unit; ...)` in pure `no_std` builds."
)
};
($unit:ty; $($value:expr),* $(,)?) => {
[$(<$unit>::new($value)),*]
};
}