diff --git a/crates/bench/src/data_gen.rs b/crates/bench/src/data_gen.rs index 8d5d675..e885ccc 100644 --- a/crates/bench/src/data_gen.rs +++ b/crates/bench/src/data_gen.rs @@ -83,11 +83,11 @@ pub fn generate_growable_file(dir: &Path) -> std::io::Result { /// Append `count` lines to the file pub fn append_lines(path: &Path, count: usize) -> std::io::Result<()> { + let existing_lines = count_existing_lines(path)?; let mut file = BufWriter::with_capacity( 64 * 1024, fs::OpenOptions::new().append(true).open(path)?, ); - let existing_lines = count_existing_lines(path).unwrap_or(0); for i in 0..count { writeln!( file, @@ -117,7 +117,12 @@ pub fn rotate_file(path: &Path) -> std::io::Result { fn count_existing_lines(path: &Path) -> std::io::Result { let file = fs::File::open(path)?; let reader = BufReader::new(file); - Ok(reader.lines().count() as u64) + let mut count = 0u64; + for line in reader.lines() { + line?; + count += 1; + } + Ok(count) } #[cfg(test)] diff --git a/crates/bench/src/mmap_reader.rs b/crates/bench/src/mmap_reader.rs index 6b2af7e..bf1ef5e 100644 --- a/crates/bench/src/mmap_reader.rs +++ b/crates/bench/src/mmap_reader.rs @@ -35,7 +35,7 @@ const HANDLER_NONE: u8 = 0; const HANDLER_DEFAULT: u8 = 1; const HANDLER_IGNORE: u8 = 2; const HANDLER_PLAIN: u8 = 3; // extern "C" fn(c_int) -#[expect(clippy::unseparated_literal_suffix, reason = "clarity: this is the SA_SIGACTION variant")] +#[allow(clippy::unseparated_literal_suffix, reason = "clarity: this is the SA_SIGACTION variant")] const HANDLER_SIGACTION: u8 = 4; // extern "C" fn(c_int, *mut siginfo_t, *mut c_void) /// Old SIGBUS handler type — raw atomic, async-signal-safe to read. diff --git a/crates/bench/src/report.rs b/crates/bench/src/report.rs index 4b68642..6c83790 100644 --- a/crates/bench/src/report.rs +++ b/crates/bench/src/report.rs @@ -143,8 +143,7 @@ pub fn format_report(results: &[BenchmarkResult]) -> String { report.push_str("| Test | Variant | RSS | Peak RSS | Page Faults |\n"); report.push_str("|------|---------|-----|----------|-------------|\n"); - let mut mem_rows: Vec<&BenchmarkResult> = - category_results.iter().copied().collect(); + let mut mem_rows: Vec<&BenchmarkResult> = category_results.to_vec(); mem_rows.sort_by(|a, b| { (&a.test_name, &a.backend, &a.variant) .cmp(&(&b.test_name, &b.backend, &b.variant)) @@ -163,7 +162,10 @@ pub fn format_report(results: &[BenchmarkResult]) -> String { report.push('\n'); } - let mut extras: Vec<(String, String, Vec<(String, f64)>)> = category_results + type ExtraEntry = (String, f64); + type ExtraGroup = (String, String, Vec); + + let mut extras: Vec = category_results .iter() .filter(|r| !r.extra.is_empty()) .map(|r| {