From dea08bc65c5f92758920f5ba5e4db0e93e73f107 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Tue, 25 Jul 2023 16:08:14 +1000 Subject: [PATCH] Implement From for Descriptor using macro Add a macro and remove all the individual from impls. Refactor only, no logic changes. --- src/descriptor/mod.rs | 47 +++++++++---------------------------------- 1 file changed, 9 insertions(+), 38 deletions(-) diff --git a/src/descriptor/mod.rs b/src/descriptor/mod.rs index 99d89f381..647b389a7 100644 --- a/src/descriptor/mod.rs +++ b/src/descriptor/mod.rs @@ -76,47 +76,18 @@ pub enum Descriptor { Tr(Tr), } -impl From> for Descriptor { - #[inline] - fn from(inner: Bare) -> Self { - Descriptor::Bare(inner) - } -} - -impl From> for Descriptor { - #[inline] - fn from(inner: Pkh) -> Self { - Descriptor::Pkh(inner) - } -} - -impl From> for Descriptor { - #[inline] - fn from(inner: Wpkh) -> Self { - Descriptor::Wpkh(inner) - } -} +macro_rules! impl_from_for_descriptor { + ($($from:ident),*) => { + $( + impl From<$from> for Descriptor { -impl From> for Descriptor { - #[inline] - fn from(inner: Sh) -> Self { - Descriptor::Sh(inner) - } -} - -impl From> for Descriptor { - #[inline] - fn from(inner: Wsh) -> Self { - Descriptor::Wsh(inner) - } -} - -impl From> for Descriptor { - #[inline] - fn from(inner: Tr) -> Self { - Descriptor::Tr(inner) + #[inline] + fn from(inner: $from) -> Self { Descriptor::$from(inner) } + } + )* } } +impl_from_for_descriptor!(Bare, Pkh, Wpkh, Sh, Wsh, Tr); /// Descriptor Type of the descriptor #[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]