work
[pspp] / rust / src / main.rs
index 319d7aea7c0f32a020db403a21fe60fad96cac67..6024b67f2dea68c9395e1b20436d94a7fedc0ac4 100644 (file)
@@ -16,9 +16,7 @@
 
 use anyhow::Result;
 use clap::Parser;
-use pspp::{
-    raw::{Reader, Record},
-};
+use pspp::raw::{Reader, Record};
 use std::fs::File;
 use std::io::BufReader;
 use std::path::{Path, PathBuf};
@@ -52,19 +50,18 @@ fn dissect(file_name: &Path, max_cases: u64) -> Result<()> {
     let mut reader = Reader::new(reader)?;
     let records: Vec<Record> = reader.collect_headers()?;
 
-    let mut n_cases = 0;
     for record in records {
         println!("{record:?}");
-        match record {
-            Record::EndOfHeaders(_) if max_cases == 0 => break,
-            Record::Case(_) => {
-                n_cases += 1;
-                if n_cases >= max_cases {
-                    break;
-                }
-            }
-            _ => (),
-        }
+        if let Record::EndOfHeaders(_) = record {
+            break;
+        };
+    }
+
+    for _ in 0..max_cases {
+        let Some(Ok(Record::Case(data))) = reader.next() else {
+            break;
+        };
+        println!("{:?}", data);
     }
     Ok(())
 }