From 0756558d53b4b6a8e9fc337627892e07805e7462 Mon Sep 17 00:00:00 2001 From: sharkdp Date: Tue, 20 Mar 2018 22:59:43 +0100 Subject: [PATCH] Use skip_serializing_if --- src/hyperfine/export/csv.rs | 29 +++++------------------------ src/hyperfine/export/mod.rs | 5 +++-- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/hyperfine/export/csv.rs b/src/hyperfine/export/csv.rs index 6b70808..acd6f19 100644 --- a/src/hyperfine/export/csv.rs +++ b/src/hyperfine/export/csv.rs @@ -4,21 +4,6 @@ use std::io::{Error, ErrorKind, Result}; use csv::WriterBuilder; -use hyperfine::internal::Second; - -/// Set of values that will be exported. -#[derive(Debug, Serialize)] -pub struct CsvEntry { - command: String, - mean: Second, - stddev: Second, - user: Second, - system: Second, - min: Second, - max: Second, -} - - #[derive(Default)] pub struct CsvExporter {} @@ -26,15 +11,11 @@ impl Exporter for CsvExporter { fn serialize(&self, results: &Vec) -> Result> { let mut writer = WriterBuilder::new().from_writer(vec![]); for res in results { - writer.serialize(&CsvEntry { - command: res.command.clone(), - mean: res.mean, - stddev: res.stddev, - user: res.user, - system: res.system, - min: res.min, - max: res.max, - })?; + // The list of times can not be exported to the CSV file - remove it: + let mut result = res.clone(); + result.times = None; + + writer.serialize(result)?; } writer diff --git a/src/hyperfine/export/mod.rs b/src/hyperfine/export/mod.rs index 91344a4..3ab275f 100644 --- a/src/hyperfine/export/mod.rs +++ b/src/hyperfine/export/mod.rs @@ -36,7 +36,8 @@ pub struct ExportEntry { max: Second, /// All run time measurements - times: Vec, + #[serde(skip_serializing_if = "Option::is_none")] + times: Option>, } impl ExportEntry { @@ -59,7 +60,7 @@ impl ExportEntry { system, min, max, - times, + times: Some(times), } } }