use serde::Serialize; #[derive(Debug, Default, Serialize)] pub struct Result { measurements: Vec, } #[derive(Debug, Serialize)] pub struct OpMeasurements { benchmark: String, op: Operation, measurements: Vec, } #[derive(Debug, Serialize)] pub enum Measurement { TotalFiles(u64), TotalData(u64), DurationMs(u128), } #[derive(Debug, Clone, Copy, Serialize)] pub enum Operation { Start, Stop, Create, Rename, Delete, Backup, Restore, } impl Result { pub fn push(&mut self, m: OpMeasurements) { self.measurements.push(m); } } impl OpMeasurements { pub fn new(benchmark: &str, op: Operation) -> Self { let benchmark = benchmark.to_string(); Self { benchmark, op, measurements: vec![], } } pub fn push(&mut self, m: Measurement) { self.measurements.push(m); } }