Merge pull request #108 from olvyko/add-skip-ser-if

Add skip_serializing_if support for attributes
This commit is contained in:
Marc-Antoine ARNAUD
2021-05-31 10:45:35 +02:00
committed by GitHub
2 changed files with 64 additions and 2 deletions

View File

@@ -145,13 +145,18 @@ impl YaSerdeField {
.map(|builder| quote!(let yaserde_inner = #builder;))
.unwrap_or_default();
let skip_if = self
.get_skip_serializing_if_function()
.map(|skip_if_function| quote!(!self.#skip_if_function(&self.#label)))
.unwrap_or(quote!(true));
self
.get_default_function()
.map(|default_function| {
quote! {
#yaserde_inner_definition
let struct_start_event =
if self.#label != #default_function() {
if #skip_if && self.#label != #default_function() {
#setter
} else {
struct_start_event
@@ -160,7 +165,7 @@ impl YaSerdeField {
})
.unwrap_or(quote! {
#yaserde_inner_definition
let struct_start_event = #setter;
let struct_start_event = if #skip_if { #setter } else { struct_start_event };
})
}
}