From 85e3ddc2b88d31109063492ca0f6a9c07651525e Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 10 Dec 2017 23:04:44 -0800 Subject: [PATCH] Less indentiation in deserialize_from_body --- serde_derive/src/de.rs | 27 +++++++++++++-------------- serde_derive_internals/src/attr.rs | 9 +++++++++ 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index 7cb1f26e..58d97c63 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -266,24 +266,23 @@ fn deserialize_from_body(cont: &Container, params: &Parameters) -> Option None, - Body::Struct(Style::Struct, ref fields) => { - Some(deserialize_from_struct(None, params, fields, &cont.attrs, None, Untagged::No)) - } - Body::Struct(Style::Tuple, ref fields) | - Body::Struct(Style::Newtype, ref fields) => { - Some(deserialize_from_tuple(None, params, fields, &cont.attrs, None)) - } - Body::Struct(Style::Unit, _) => None, + match cont.body { + Body::Enum(_) => None, + Body::Struct(Style::Struct, ref fields) => { + Some(deserialize_from_struct(None, params, fields, &cont.attrs, None, Untagged::No)) } - } else { - None + Body::Struct(Style::Tuple, ref fields) | + Body::Struct(Style::Newtype, ref fields) => { + Some(deserialize_from_tuple(None, params, fields, &cont.attrs, None)) + } + Body::Struct(Style::Unit, _) => None, } } diff --git a/serde_derive_internals/src/attr.rs b/serde_derive_internals/src/attr.rs index 7baeb59b..3cf7e74d 100644 --- a/serde_derive_internals/src/attr.rs +++ b/serde_derive_internals/src/attr.rs @@ -164,6 +164,15 @@ pub enum Identifier { Variant, } +impl Identifier { + pub fn is_some(self) -> bool { + match self { + Identifier::No => false, + Identifier::Field | Identifier::Variant => true, + } + } +} + impl Container { /// Extract out the `#[serde(...)]` attributes from an item. pub fn from_ast(cx: &Ctxt, item: &syn::DeriveInput) -> Self {