From 09f0719b4f769c352b74c4de92342572c548d8fb Mon Sep 17 00:00:00 2001 From: Dirkjan Ochtman Date: Thu, 18 Nov 2021 13:26:53 +0100 Subject: [PATCH] Use an associated const for the element names --- epp-client-macros/src/lib.rs | 4 +--- epp-client/src/epp/object.rs | 10 +++------- epp-client/src/epp/request.rs | 3 +-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/epp-client-macros/src/lib.rs b/epp-client-macros/src/lib.rs index 66f7b22..4d17c6b 100644 --- a/epp-client-macros/src/lib.rs +++ b/epp-client-macros/src/lib.rs @@ -39,9 +39,7 @@ fn element_name_macro(ast: &syn::DeriveInput) -> TokenStream { let implement = quote! { impl #impl_generics ElementName for #name #type_generics { - fn element_name(&self) -> &'static str { - #elem_name - } + const ELEMENT: &'static str = #elem_name; } }; implement.into() diff --git a/epp-client/src/epp/object.rs b/epp-client/src/epp/object.rs index ba4cb76..176f061 100644 --- a/epp-client/src/epp/object.rs +++ b/epp-client/src/epp/object.rs @@ -44,7 +44,7 @@ impl StringValueTrait for String { /// Trait to set correct value for xml tags when tags are being generated from generic types pub trait ElementName { - fn element_name(&self) -> &'static str; + const ELEMENT: &'static str; } #[derive(Serialize, Deserialize, Debug, PartialEq, ElementName)] @@ -72,11 +72,9 @@ impl Serialize for EppObject { where S: Serializer, { - let data_name = self.data.element_name(); - let mut state = serializer.serialize_struct("epp", 4)?; state.serialize_field("xmlns", &self.xmlns)?; - state.serialize_field(data_name, &self.data)?; + state.serialize_field(T::ELEMENT, &self.data)?; state.end() } } @@ -115,10 +113,8 @@ impl Serialize for Extension { where S: Serializer, { - let data_name = self.data.element_name(); - let mut state = serializer.serialize_struct("extension", 1)?; - state.serialize_field(data_name, &self.data)?; + state.serialize_field(E::ELEMENT, &self.data)?; state.end() } } diff --git a/epp-client/src/epp/request.rs b/epp-client/src/epp/request.rs index 389893f..40f3746 100644 --- a/epp-client/src/epp/request.rs +++ b/epp-client/src/epp/request.rs @@ -48,9 +48,8 @@ impl Serialize where S: Serializer, { - let command_name = self.command.element_name(); let mut state = serializer.serialize_struct("command", 3)?; - state.serialize_field(command_name, &self.command)?; + state.serialize_field(T::ELEMENT, &self.command)?; state.serialize_field("extension", &self.extension)?; state.serialize_field("clTRID", &self.client_tr_id)?; state.end()