From 83e0c6cb3d60b5c112e070bdbb525c48c404868d Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Tue, 20 May 2025 18:49:01 +0900 Subject: [PATCH] fix(converter): wrong iterator usage all iterator was consumed for searching value before collecting field --- src/converter.rs | 10 +++++++--- src/integrated.rs | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/converter.rs b/src/converter.rs index 7ab276a..2b9ecad 100644 --- a/src/converter.rs +++ b/src/converter.rs @@ -390,13 +390,17 @@ impl Register { let desc = node.attribute("desc").map(str::to_string); let children: Vec<_> = { - let mut child_elements = node.children().filter(|node| node.is_element()); - if child_elements.any(|node| node.tag_name().name().eq("value")) { + if node + .children() + .filter(|node| node.is_element()) + .any(|node| node.tag_name().name().eq("value")) + { // Generate virtual single field under the register, to absorb difference between // normal format vec![Field::from_xml_register_dom(node)?] } else { - child_elements + node.children() + .filter(|node| node.is_element()) .filter(|node| node.tag_name().name().eq("field")) .map(Field::from_xml_dom) .collect::>()? diff --git a/src/integrated.rs b/src/integrated.rs index 341c448..0d64ee8 100644 --- a/src/integrated.rs +++ b/src/integrated.rs @@ -46,7 +46,7 @@ pub fn generate(xml: &path::Path, out: &path::Path) -> Result<(), Error> { log::debug!("xml parsed {doc:?}"); let register_map = types::Module::from_xml_dom(doc.root_element(), xml_git_info)?; - log::debug!("converted {register_map:?}"); + log::debug!("converted {register_map:#?}"); let (_maps, errors) = register_map.validate(); if !errors.is_empty() {