skip serialization if value equals to default

This commit is contained in:
Marc-Antoine Arnaud
2018-12-07 10:21:59 +01:00
parent 9f19057353
commit 28c13f5861
15 changed files with 885 additions and 525 deletions

View File

@@ -30,7 +30,7 @@ pub fn serialize(
};
match variant.fields {
Fields::Unit => Some(quote!{
Fields::Unit => Some(quote! {
&#name::#label => {
let data_event = XmlEvent::characters(#label_name);
let _ret = writer.write(data_event);
@@ -49,9 +49,9 @@ pub fn serialize(
let field_label = &field.ident;
if field_attrs.text {
return Some(quote!(
let data_event = XmlEvent::characters(&self.#field_label);
let _ret = writer.write(data_event);
));
let data_event = XmlEvent::characters(&self.#field_label);
let _ret = writer.write(data_event);
));
}
let renamed_field_label = match field_attrs.rename {
@@ -61,7 +61,7 @@ pub fn serialize(
let field_label_name = renamed_field_label.unwrap().to_string();
match get_field_type(field) {
Some(FieldType::FieldTypeString) => Some(quote!{
Some(FieldType::FieldTypeString) => Some(quote! {
match self {
&#name::#label{ref #field_label, ..} => {
let struct_start_event = XmlEvent::start_element(#field_label_name);
@@ -76,7 +76,7 @@ pub fn serialize(
_ => {},
}
}),
Some(FieldType::FieldTypeStruct { .. }) => Some(quote!{
Some(FieldType::FieldTypeStruct { .. }) => Some(quote! {
let struct_start_event = XmlEvent::start_element(#field_label_name);
let _ret = writer.write(struct_start_event);
@@ -93,7 +93,7 @@ pub fn serialize(
let struct_end_event = XmlEvent::end_element();
let _ret = writer.write(struct_end_event);
}),
Some(FieldType::FieldTypeVec { .. }) => Some(quote!{
Some(FieldType::FieldTypeVec { .. }) => Some(quote! {
match self {
&#name::#label{ref #field_label, ..} => {
for item in #field_label {
@@ -121,7 +121,7 @@ pub fn serialize(
tokens
});
Some(quote!{
Some(quote! {
&#name::#label{..} => {
#enum_fields
}