minor cleanup of element skipping

* "skipped" is unnecessary: it's always false at depth == 0,
  so its one use in "if depth == 0 && !skipped" can be removed.
* the element doesn't need a binding, and shadowing "named_element"
  confused me.
* remove old commented-out path that errored on unknown elements
This commit is contained in:
Scott Lamb 2020-06-19 22:51:43 -07:00
parent c889461eef
commit 8a1e1e2e16

View File

@ -341,26 +341,20 @@ pub fn parse(
trace!("Struct {} @ {}: matching {:?}", stringify!(#name), start_depth, event); trace!("Struct {} @ {}: matching {:?}", stringify!(#name), start_depth, event);
match event { match event {
XmlEvent::StartElement{ref name, ref attributes, ..} => { XmlEvent::StartElement{ref name, ref attributes, ..} => {
let mut skipped = false;
match name.local_name.as_str() { match name.local_name.as_str() {
#call_visitors #call_visitors
named_element => { _ => {
let event = reader.next_event()?; let event = reader.next_event()?;
#write_unused #write_unused
if depth > 0 { // Don't skip root element if depth > 0 { // Don't skip root element
skipped = true;
reader.skip_element(|event| { reader.skip_element(|event| {
#write_unused #write_unused
})?; })?;
} }
} }
// name => {
// return Err(format!("unknown key {}", name))
// }
} }
if depth == 0 && !skipped { // Look for attributes only at element start if depth == 0 { // Look for attributes only at element start
#attributes_loading #attributes_loading
} }
depth += 1; depth += 1;