mirror of
https://github.com/serde-rs/serde.git
synced 2025-10-02 07:21:12 +00:00
Some refactoring to use a bit less unwrap()
This commit is contained in:
parent
7c596c7136
commit
6e324e887d
@ -2108,17 +2108,19 @@ impl<'a, 'de, E> Deserializer<'de> for FlatMapDeserializer<'a, 'de, E>
|
|||||||
V: Visitor<'de>,
|
V: Visitor<'de>,
|
||||||
{
|
{
|
||||||
for item in self.0.iter_mut() {
|
for item in self.0.iter_mut() {
|
||||||
if item.is_none() || !item.as_ref().unwrap().0.as_str()
|
let use_item = match *item {
|
||||||
.map_or(false, |x| variants.contains(&x)) {
|
None => false,
|
||||||
continue;
|
Some((ref c, _)) => c.as_str().map_or(false, |x| variants.contains(&x))
|
||||||
}
|
};
|
||||||
|
|
||||||
|
if use_item {
|
||||||
let (key, value) = item.take().unwrap();
|
let (key, value) = item.take().unwrap();
|
||||||
return visitor.visit_enum(EnumDeserializer::new(
|
return visitor.visit_enum(EnumDeserializer::new(
|
||||||
key,
|
key,
|
||||||
Some(value)
|
Some(value)
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Err(Error::custom(format_args!(
|
Err(Error::custom(format_args!(
|
||||||
"no variant of enum {} not found in flattened data",
|
"no variant of enum {} not found in flattened data",
|
||||||
@ -2197,14 +2199,18 @@ impl<'a, 'de, E> MapAccess<'de> for FlatMapAccess<'a, 'de, E>
|
|||||||
T: DeserializeSeed<'de>,
|
T: DeserializeSeed<'de>,
|
||||||
{
|
{
|
||||||
while let Some(item) = self.iter.next() {
|
while let Some(item) = self.iter.next() {
|
||||||
let use_item = item.is_some() && item.as_ref().unwrap().0.as_str()
|
let use_item = match *item {
|
||||||
.map_or(self.fields.is_none(), |key| {
|
None => false,
|
||||||
|
Some((ref c, _)) => {
|
||||||
|
c.as_str().map_or(self.fields.is_none(), |key| {
|
||||||
match self.fields {
|
match self.fields {
|
||||||
None => true,
|
None => true,
|
||||||
Some(fields) if fields.contains(&key) => true,
|
Some(fields) if fields.contains(&key) => true,
|
||||||
_ => false
|
_ => false
|
||||||
}
|
}
|
||||||
});
|
})
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if use_item {
|
if use_item {
|
||||||
let (key, content) = item.take().unwrap();
|
let (key, content) = item.take().unwrap();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user