Use an associated const for the element names
This commit is contained in:
parent
bc96fd60f2
commit
09f0719b4f
|
@ -39,9 +39,7 @@ fn element_name_macro(ast: &syn::DeriveInput) -> TokenStream {
|
||||||
|
|
||||||
let implement = quote! {
|
let implement = quote! {
|
||||||
impl #impl_generics ElementName for #name #type_generics {
|
impl #impl_generics ElementName for #name #type_generics {
|
||||||
fn element_name(&self) -> &'static str {
|
const ELEMENT: &'static str = #elem_name;
|
||||||
#elem_name
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
implement.into()
|
implement.into()
|
||||||
|
|
|
@ -44,7 +44,7 @@ impl StringValueTrait for String {
|
||||||
|
|
||||||
/// Trait to set correct value for xml tags when tags are being generated from generic types
|
/// Trait to set correct value for xml tags when tags are being generated from generic types
|
||||||
pub trait ElementName {
|
pub trait ElementName {
|
||||||
fn element_name(&self) -> &'static str;
|
const ELEMENT: &'static str;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug, PartialEq, ElementName)]
|
#[derive(Serialize, Deserialize, Debug, PartialEq, ElementName)]
|
||||||
|
@ -72,11 +72,9 @@ impl<T: ElementName + Serialize> Serialize for EppObject<T> {
|
||||||
where
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
let data_name = self.data.element_name();
|
|
||||||
|
|
||||||
let mut state = serializer.serialize_struct("epp", 4)?;
|
let mut state = serializer.serialize_struct("epp", 4)?;
|
||||||
state.serialize_field("xmlns", &self.xmlns)?;
|
state.serialize_field("xmlns", &self.xmlns)?;
|
||||||
state.serialize_field(data_name, &self.data)?;
|
state.serialize_field(T::ELEMENT, &self.data)?;
|
||||||
state.end()
|
state.end()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,10 +113,8 @@ impl<E: ElementName + Serialize> Serialize for Extension<E> {
|
||||||
where
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
let data_name = self.data.element_name();
|
|
||||||
|
|
||||||
let mut state = serializer.serialize_struct("extension", 1)?;
|
let mut state = serializer.serialize_struct("extension", 1)?;
|
||||||
state.serialize_field(data_name, &self.data)?;
|
state.serialize_field(E::ELEMENT, &self.data)?;
|
||||||
state.end()
|
state.end()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,9 +48,8 @@ impl<T: ElementName + Serialize, E: ElementName + Serialize> Serialize
|
||||||
where
|
where
|
||||||
S: Serializer,
|
S: Serializer,
|
||||||
{
|
{
|
||||||
let command_name = self.command.element_name();
|
|
||||||
let mut state = serializer.serialize_struct("command", 3)?;
|
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("extension", &self.extension)?;
|
||||||
state.serialize_field("clTRID", &self.client_tr_id)?;
|
state.serialize_field("clTRID", &self.client_tr_id)?;
|
||||||
state.end()
|
state.end()
|
||||||
|
|
Loading…
Reference in New Issue