From ebaa6210a40a0220f332ea6f88b501323afb2690 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Fri, 1 Mar 2024 17:51:16 +0100 Subject: [PATCH] add from impls --- src/ecss/mod.rs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/ecss/mod.rs b/src/ecss/mod.rs index 03c7a31..d7541db 100644 --- a/src/ecss/mod.rs +++ b/src/ecss/mod.rs @@ -360,10 +360,28 @@ impl> EcssEn { } -pub type EcssEnumU8 = GenericEcssEnumWrapper; -pub type EcssEnumU16 = GenericEcssEnumWrapper; -pub type EcssEnumU32 = GenericEcssEnumWrapper; -pub type EcssEnumU64 = GenericEcssEnumWrapper; +macro_rules! impl_from_for_generic_ecss_enum_wrapper { + ($($ty:ty => $Enum:ident),*) => { + $( + pub type $Enum = GenericEcssEnumWrapper<$ty>; + + impl From<$ty> for $Enum { + fn from(value: $ty) -> Self { + Self::new(value) + } + } + )* + }; +} + +// Generates EcssEnum<$TY> type definitions as well as a From<$TY> for EcssEnum<$TY> +// implementation. +impl_from_for_generic_ecss_enum_wrapper! { + u8 => EcssEnumU8, + u16 => EcssEnumU16, + u32 => EcssEnumU32, + u64 => EcssEnumU64 +} /// Generic trait for PUS packet abstractions which can written to a raw slice as their raw /// byte representation. This is especially useful for generic abstractions which depend only