From 96f7b1a5efa44aad3900bf2f95d5e70644b71b63 Mon Sep 17 00:00:00 2001 From: Solomon Ucko Date: Tue, 9 Aug 2022 23:43:58 -0400 Subject: [PATCH] eliminate free function --- src/logic.rs | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/logic.rs b/src/logic.rs index a163279..8aaf693 100644 --- a/src/logic.rs +++ b/src/logic.rs @@ -10,28 +10,24 @@ macro_rules! logic_op { $i:ident, $j:ident, $r:ident, $s:ident; $inline_heap:tt, $heap_heap:tt ) => { - fn $fun(a: &$typ, b: &$typ) -> $typ { - match (&a.0, &b.0) { - (&$typ_inner::Inline($i), &$typ_inner::Inline($j)) => { - $typ($typ_inner::Inline($i.$fun($j))) - } - - (&$typ_inner::Inline($i), &$typ_inner::Heap(($r, $s))) - | (&$typ_inner::Heap(($r, $s)), &$typ_inner::Inline($i)) => { - $inline_heap - } - - (&$typ_inner::Heap(($r, $s)), &$typ_inner::Heap(($i, $j))) => { - $heap_heap - } - } - } - impl<'a, 'b> $imp<&'a $typ> for &'b $typ { type Output = $typ; fn $fun(self, rhs: &$typ) -> Self::Output { - $fun(self, rhs) + match (&self.0, &rhs.0) { + (&$typ_inner::Inline($i), &$typ_inner::Inline($j)) => { + $typ($typ_inner::Inline($i.$fun($j))) + } + + (&$typ_inner::Inline($i), &$typ_inner::Heap(($r, $s))) + | (&$typ_inner::Heap(($r, $s)), &$typ_inner::Inline($i)) => { + $inline_heap + } + + (&$typ_inner::Heap(($r, $s)), &$typ_inner::Heap(($i, $j))) => { + $heap_heap + } + } } }