cleanup
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 3 Jan 2026 23:07:21 +0000 (15:07 -0800)
committerBen Pfaff <blp@cs.stanford.edu>
Sat, 3 Jan 2026 23:07:21 +0000 (15:07 -0800)
rust/pspp/src/spv/read/legacy_xml.rs

index 8b49cf98829d9e6abec9b77aa185b14d06f88f31..b986aeecae7f995b0ce704eee09bc666924d52b8 100644 (file)
@@ -197,20 +197,15 @@ impl Visualization {
         data: IndexMap<String, IndexMap<String, Vec<Datum<String>>>>,
         warn: &mut dyn FnMut(LegacyXmlWarning),
     ) -> BTreeMap<&str, Series> {
-        let mut variables: Vec<&dyn Variable> = Vec::new();
-        for child in &self.children {
-            match child {
-                VisChild::SourceVariable(source_variable) => variables.push(source_variable),
-                VisChild::DerivedVariable(derived_variable) => variables.push(derived_variable),
-                _ => (),
-            }
-        }
+        let mut variables: Vec<&dyn Variable> = self
+            .children
+            .iter()
+            .filter_map(|child| child.variable())
+            .collect();
         let mut series = BTreeMap::<&str, Series>::new();
-        while let n = variables.len()
-            && n > 0
-        {
+        while !variables.is_empty() {
+            let n = variables.len();
             variables.retain(|variable| !variable.decode(&data, &mut series, warn));
-
             if n == variables.len() {
                 warn(LegacyXmlWarning::UnresolvedDependencies(
                     variables
@@ -763,6 +758,13 @@ enum VisChild {
 }
 
 impl VisChild {
+    fn variable(&self) -> Option<&dyn Variable> {
+        match self {
+            VisChild::SourceVariable(source_variable) => Some(source_variable),
+            VisChild::DerivedVariable(derived_variable) => Some(derived_variable),
+            _ => None,
+        }
+    }
     fn style(&self) -> Option<&Style> {
         match self {
             Self::Style(style) => Some(style),