From 3e93bac9f58c7e2b4089cd9fd0a09c7395100fda Mon Sep 17 00:00:00 2001 From: Bryce Besler Date: Tue, 6 Apr 2021 08:06:21 -0600 Subject: [PATCH] Simplify "fold_array" macro (#527) --- src/macros.rs | 26 ++------------------------ src/point.rs | 4 ++-- src/vector.rs | 4 ++-- 3 files changed, 6 insertions(+), 28 deletions(-) diff --git a/src/macros.rs b/src/macros.rs index e3e798c..fbc38b4 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -139,30 +139,8 @@ macro_rules! impl_assignment_operator { } macro_rules! fold_array { - (&$method:ident, { $x:expr }) => { - *$x - }; - (&$method:ident, { $x:expr, $y:expr }) => { - $x.$method(&$y) - }; - (&$method:ident, { $x:expr, $y:expr, $z:expr }) => { - $x.$method(&$y).$method(&$z) - }; - (&$method:ident, { $x:expr, $y:expr, $z:expr, $w:expr }) => { - $x.$method(&$y).$method(&$z).$method(&$w) - }; - ($method:ident, { $x:expr }) => { - $x - }; - ($method:ident, { $x:expr, $y:expr }) => { - $x.$method($y) - }; - ($method:ident, { $x:expr, $y:expr, $z:expr }) => { - $x.$method($y).$method($z) - }; - ($method:ident, { $x:expr, $y:expr, $z:expr, $w:expr }) => { - $x.$method($y).$method($z).$method($w) - }; + ($method:ident, $x:expr) => ($x); + ($method:ident, $x:expr, $($y:expr),+) => ($x.$method(fold_array!($method, $($y),+))) } /// Generate array conversion implementations for a compound array type diff --git a/src/point.rs b/src/point.rs index faf2a6d..928f9b7 100644 --- a/src/point.rs +++ b/src/point.rs @@ -127,12 +127,12 @@ macro_rules! impl_point { #[inline] fn sum(self) -> S where S: Add { - fold_array!(add, { $(self.$field),+ }) + fold_array!(add, $(self.$field),+ ) } #[inline] fn product(self) -> S where S: Mul { - fold_array!(mul, { $(self.$field),+ }) + fold_array!(mul, $(self.$field),+ ) } fn is_finite(&self) -> bool where S: Float { diff --git a/src/vector.rs b/src/vector.rs index adcc581..1f28848 100644 --- a/src/vector.rs +++ b/src/vector.rs @@ -163,12 +163,12 @@ macro_rules! impl_vector { #[inline] fn sum(self) -> S where S: Add { - fold_array!(add, { $(self.$field),+ }) + fold_array!(add, $(self.$field),+ ) } #[inline] fn product(self) -> S where S: Mul { - fold_array!(mul, { $(self.$field),+ }) + fold_array!(mul, $(self.$field),+ ) } fn is_finite(&self) -> bool where S: Float {