add from impls
Rust/spacepackets/pipeline/head This commit looks good Details

This commit is contained in:
Robin Müller 2024-03-01 17:51:16 +01:00
parent 6ea18d3715
commit ebaa6210a4
Signed by: muellerr
GPG Key ID: A649FB78196E3849
1 changed files with 22 additions and 4 deletions

View File

@ -360,10 +360,28 @@ impl<TYPE: Debug + Copy + Clone + PartialEq + Eq + ToBeBytes + Into<u64>> EcssEn
{
}
pub type EcssEnumU8 = GenericEcssEnumWrapper<u8>;
pub type EcssEnumU16 = GenericEcssEnumWrapper<u16>;
pub type EcssEnumU32 = GenericEcssEnumWrapper<u32>;
pub type EcssEnumU64 = GenericEcssEnumWrapper<u64>;
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