src/metaprogramming.rs

branch
dev
changeset 59
9226980e45a7
parent 57
1b3b1687b9ed
child 75
e9f4550cfa18
--- a/src/metaprogramming.rs	Sat Dec 14 09:31:27 2024 -0500
+++ b/src/metaprogramming.rs	Tue Dec 31 08:30:02 2024 -0500
@@ -41,63 +41,3 @@
     (noref, &$x:ty) => { $x };
 }
 
-/// Use as
-/// ```ignore
-/// impl_vectorspace_ops!(impl_binop, impl_assignop, impl_scalarop, impl_scalar_assignop, impl_unaryop);
-/// ```
-/// with `impl_binop`, `impl_assignop`, `impl_scalarop`, and `impl_unaryop` macros provided.
-/// For example usage see the [power][crate::vectorspace::powerspace] and
-/// [product spaces][crate::vectorspace::productspace] implementations.
-#[macro_export]
-macro_rules! impl_vectorspace_ops {
-    ($impl_binop:ident, $impl_assignop:ident, $impl_scalarop:ident, $impl_scalarlhs_op:ident,
-        $impl_scalar_assignop:ident, $impl_unaryop:ident) => {
-        impl_vectorspace_ops!($impl_binop, $impl_assignop, $impl_scalarop, $impl_scalarlhs_op,
-                                $impl_scalar_assignop, $impl_unaryop,
-                                (f32, f64,
-                                num::complex::Complex<f32>,
-                                num::complex::Complex<f64>));
-    };
-    ($impl_binop:ident, $impl_assignop:ident, $impl_scalarop:ident, $impl_scalarlhs_op:ident,
-        $impl_scalar_assignop:ident, $impl_unaryop:ident, ($($field:ty),+)) => {
-        impl_vectorspace_ops!(@binary, $impl_binop, Add, add);
-        impl_vectorspace_ops!(@binary, $impl_binop, Sub, sub);
-        impl_vectorspace_ops!(@assign, $impl_assignop, AddAssign, add_assign);
-        impl_vectorspace_ops!(@assign, $impl_assignop, SubAssign, sub_assign);
-        impl_vectorspace_ops!(@scalar, $impl_scalarop, Mul, mul);
-        impl_vectorspace_ops!(@scalar, $impl_scalarop, Div, div);
-        // Compiler overflow
-        // $(
-        //     impl_vectorspace_ops!(@scalar_lhs, $impl_scalarlhs_op, Mul, mul, $field);
-        // )*
-        impl_vectorspace_ops!(@scalar_assign, $impl_scalar_assignop, MulAssign, mul_assign);
-        impl_vectorspace_ops!(@scalar_assign, $impl_scalar_assignop, DivAssign, div_assign);
-        impl_vectorspace_ops!(@unary, $impl_unaryop, Neg, neg);
-    };
-    (@binary, $impl:ident, $trait : ident, $fn : ident) => {
-        $impl!($trait, $fn, ref, ref);
-        $impl!($trait, $fn, ref, noref);
-        $impl!($trait, $fn, noref, ref);
-        $impl!($trait, $fn, noref, noref);
-    };
-    (@assign, $impl:ident, $trait : ident, $fn :ident) => {
-        $impl!($trait, $fn, ref);
-        $impl!($trait, $fn, noref);
-    };
-    (@scalar, $impl:ident, $trait : ident, $fn :ident) => {
-        $impl!($trait, $fn, ref);
-        $impl!($trait, $fn, noref);
-    };
-    (@scalar_lhs, $impl:ident, $trait : ident, $fn : ident, $field: ty) => {
-        // These operators need workarounds
-        $impl!($trait, $fn, ref, $field);
-        $impl!($trait, $fn, noref, $field);
-    };
-    (@scalar_assign, $impl:ident, $trait : ident, $fn :ident) => {
-        $impl!($trait, $fn);
-    };
-    (@unary, $impl:ident, $trait : ident, $fn :ident) => {
-        $impl!($trait, $fn, ref);
-        $impl!($trait, $fn, noref);
-    };
-}

mercurial