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)]