From 6e324e887de6103ae1a36eb620dda37b760caba1 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Tue, 20 Mar 2018 13:20:56 +0100 Subject: [PATCH] Some refactoring to use a bit less unwrap() --- serde/src/private/de.rs | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/serde/src/private/de.rs b/serde/src/private/de.rs index 13de204f..8958c55e 100644 --- a/serde/src/private/de.rs +++ b/serde/src/private/de.rs @@ -2108,16 +2108,18 @@ impl<'a, 'de, E> Deserializer<'de> for FlatMapDeserializer<'a, 'de, E> V: Visitor<'de>, { for item in self.0.iter_mut() { - if item.is_none() || !item.as_ref().unwrap().0.as_str() - .map_or(false, |x| variants.contains(&x)) { - continue; - } + let use_item = match *item { + None => false, + Some((ref c, _)) => c.as_str().map_or(false, |x| variants.contains(&x)) + }; - let (key, value) = item.take().unwrap(); - return visitor.visit_enum(EnumDeserializer::new( - key, - Some(value) - )); + if use_item { + let (key, value) = item.take().unwrap(); + return visitor.visit_enum(EnumDeserializer::new( + key, + Some(value) + )); + } } Err(Error::custom(format_args!( @@ -2197,14 +2199,18 @@ impl<'a, 'de, E> MapAccess<'de> for FlatMapAccess<'a, 'de, E> T: DeserializeSeed<'de>, { while let Some(item) = self.iter.next() { - let use_item = item.is_some() && item.as_ref().unwrap().0.as_str() - .map_or(self.fields.is_none(), |key| { - match self.fields { - None => true, - Some(fields) if fields.contains(&key) => true, - _ => false - } - }); + let use_item = match *item { + None => false, + Some((ref c, _)) => { + c.as_str().map_or(self.fields.is_none(), |key| { + match self.fields { + None => true, + Some(fields) if fields.contains(&key) => true, + _ => false + } + }) + } + }; if use_item { let (key, content) = item.take().unwrap();