macro_rules! impl_serialize { // Handle no extra const generics ($container:ident, $field_name:ident) => { impl_serialize!($container, $field_name,); }; ($container:ident, $field_name:ident, $($const_name:ident: $const_type:ty),*) => { impl<M: crate::Localize + serde::Serialize, $(const $const_name: $const_type),*> serde::Serialize for $container<M, $($const_name),*> { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: serde::Serializer, { self.$field_name.serialize(serializer) } } // impl<M: crate::Localize + std::fmt::Debug, $(const $const_name: $const_type),*> std::fmt::Debug for $container<M, $($const_name),*> { // fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { // self.$field_name.fmt(f) // } // } }; } // Re-export the macro so other modules can use it pub(crate) use impl_serialize;