From f011a4ffc009ccde71a9a2720c24d1546044b880 Mon Sep 17 00:00:00 2001 From: Matt Bilker Date: Mon, 3 Sep 2018 00:21:14 -0400 Subject: [PATCH] node(extra): hoist Nodes inside Value out of Value --- src/node/extra/de.rs | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/node/extra/de.rs b/src/node/extra/de.rs index bf48bfc..3549906 100644 --- a/src/node/extra/de.rs +++ b/src/node/extra/de.rs @@ -29,15 +29,7 @@ impl<'de> Deserialize<'de> for ExtraNodes { let mut extra = ExtraNodes::new(); - loop { - let key = match map.next_key::() { - Ok(Some(s)) => s, - Ok(None) => break, - Err(e) => { - error!("ExtraNodesVisitor::visit_map() => error: {:?}", e); - return Err(e); - }, - }; + while let Some(key) = try!(map.next_key::()) { debug!("ExtraNodesVisitor::visit_map() => key: {:?}", key); let marshal: Marshal = try!(map.next_value()); @@ -59,16 +51,18 @@ impl<'de> Deserialize<'de> for ExtraNodes { return Err(A::Error::custom("`Marshal` must contain `Value` for attribute")); } } else { - /* - let node = NodeVisitor::map_to_node(node_type, &key, &mut map)?; - debug!("ExtraNodesVisitor::visit_map() => node: {:?}", node); - */ match value { - MarshalValue::Value(value) => extra.insert(key.clone(), Node::with_value(key, value)), MarshalValue::Node(mut node) => { node.key = key.clone(); extra.insert(key, node) }, + MarshalValue::Value(value) => match value { + Value::Node(mut node) => { + node.key = key.clone(); + extra.insert(key, *node) + }, + value => extra.insert(key.clone(), Node::with_value(key, value)), + }, }; } }