From dae7ae8a987c3911c63e952cea8d14d695032ac4 Mon Sep 17 00:00:00 2001 From: Zachary Sunforge Date: Tue, 29 Oct 2024 08:58:36 -0700 Subject: [PATCH] Remove requirement for derive_more attributes to be in scope when using quantity_type! --- generate-quantity/src/lib.rs | 16 +++++++++++++--- src/quantity/irradiance.rs | 1 - src/quantity/resistance.rs | 1 - src/quantity/temperature.rs | 1 - src/quantity/voltage.rs | 11 +++++------ src/quantity/volume_rate.rs | 1 - 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/generate-quantity/src/lib.rs b/generate-quantity/src/lib.rs index e16c040..1968cf7 100644 --- a/generate-quantity/src/lib.rs +++ b/generate-quantity/src/lib.rs @@ -30,11 +30,11 @@ impl Parse for QuantityInput { } } +//TODO: Remove requirement for physical::quantity::{Quantity, Value} /// The following imports must be in scope for this macro to work /// ``` -/// use physical::quantity::{Quantity, Value}; -/// use derive_more::{Add, AddAssign, Display, Sub, SubAssign}; /// use generate_quantity::quantity_type; +/// use physical::quantity::{Quantity, Value}; /// ``` #[proc_macro] pub fn quantity_type(input: TokenStream) -> TokenStream { @@ -98,7 +98,17 @@ pub fn quantity_type(input: TokenStream) -> TokenStream { //----- Output Code ---------------------------------- let expanded = quote! { - #[derive(Copy, Clone, PartialEq, PartialOrd, Add, AddAssign, Sub, SubAssign, Display)] + #[derive( + Copy, + Clone, + PartialEq, + PartialOrd, + derive_more::Add, + derive_more::AddAssign, + derive_more::Sub, + derive_more::SubAssign, + derive_more::Display + )] #[display(fmt = "{} {}", _0, "Self::symbol()")] #[repr(transparent)] pub struct #struct_name(pub V); diff --git a/src/quantity/irradiance.rs b/src/quantity/irradiance.rs index 20a041a..f656d31 100644 --- a/src/quantity/irradiance.rs +++ b/src/quantity/irradiance.rs @@ -1,5 +1,4 @@ use crate::quantity::{Quantity, Value}; -use derive_more::{Add, AddAssign, Display, Sub, SubAssign}; use generate_quantity::quantity_type; //----- Watter per Square Meter ---------------------------------- diff --git a/src/quantity/resistance.rs b/src/quantity/resistance.rs index ecbbd9d..8db7ce0 100644 --- a/src/quantity/resistance.rs +++ b/src/quantity/resistance.rs @@ -1,4 +1,3 @@ -use derive_more::{Add, AddAssign, Display, Sub, SubAssign}; use generate_quantity::quantity_type; use crate::quantity::{Quantity, Value}; diff --git a/src/quantity/temperature.rs b/src/quantity/temperature.rs index df21a86..745fd49 100644 --- a/src/quantity/temperature.rs +++ b/src/quantity/temperature.rs @@ -1,4 +1,3 @@ -use derive_more::{Add, AddAssign, Display, Sub, SubAssign}; use generate_quantity::quantity_type; use crate::quantity::{DECI, Quantity, Value}; diff --git a/src/quantity/voltage.rs b/src/quantity/voltage.rs index ea3887c..682a8ba 100644 --- a/src/quantity/voltage.rs +++ b/src/quantity/voltage.rs @@ -1,4 +1,3 @@ -use derive_more::{Add, AddAssign, Display, Sub, SubAssign}; use generate_quantity::quantity_type; use crate::quantity::{Quantity, Value}; @@ -32,22 +31,22 @@ impl MilliVolts { mod tests { use float_cmp::assert_approx_eq; use super::*; - + #[test] fn convert_u32() { let volts: Volts = 3.volts(); let millivolts: MilliVolts = 3_000.milli_volts(); - + assert_eq!(volts.to_millivolts().0, millivolts.0); assert_eq!(millivolts.to_volts().0, volts.0); } - + #[test] fn convert_f64() { let volts: Volts = 3.0.volts(); let millivolts: MilliVolts = 3_000.0.milli_volts(); - + assert_approx_eq!(f64, volts.to_millivolts().0, millivolts.0); assert_approx_eq!(f64, millivolts.to_volts().0, volts.0); } -} \ No newline at end of file +} diff --git a/src/quantity/volume_rate.rs b/src/quantity/volume_rate.rs index 9646b80..3c79402 100644 --- a/src/quantity/volume_rate.rs +++ b/src/quantity/volume_rate.rs @@ -1,5 +1,4 @@ use crate::quantity::{Quantity, Value}; -use derive_more::{Add, AddAssign, Display, Sub, SubAssign}; use generate_quantity::quantity_type; //----- Liters per Minute ----------------------------------