1use std::{error::Error, path::PathBuf, time::Instant};
2
3use fallible_iterator::FallibleIterator;
4use fast_dlt::file::DltFile;
5
6fn main() -> Result<(), Box<dyn Error>> {
7 let Some(path) = std::env::args().nth(1).map(PathBuf::from) else {
8 return Err("This example expects a path to a DLT file!".into());
9 };
10
11 let data = std::fs::read(path)?;
12
13 let file = DltFile::new(&data);
14
15 let start = Instant::now();
16 let count = file.count()?;
17 let elapsed = start.elapsed();
18
19 println!(
20 "Parsed {count} messages in {:.2} ({:.2} per second, {:.2} MiB/s)",
21 elapsed.as_secs_f32(),
22 count as f64 / elapsed.as_secs_f64(),
23 (data.len() as f64 / f64::from(1024 * 1024) / elapsed.as_secs_f64())
24 );
25 Ok(())
26}