Gestion des erreurs simple
Pas d’entrées/sorties correctes sans une gestion des erreurs.
Dans une appli simple, il peut suffire de les propager en ajoutant des infos de contexte.
C’est facile à faire avec l’aide de
anyhow
ou
eyre
:
// Even the main function can return a Result
fn main() -> anyhow::Result<()> {
// Parse CLI arguments
let args = Args::parse();
// Load data points from Criterion
let data = criterion::read_all(&args).context("loading data from Criterion")?;
// Rearrange data in a layout suitable for plotting
let traces = Traces::new(data).context("rearranging data into plot traces")?;
// Abort if there is nothing to plot
if traces.is_empty() {
bail!("specified regex does not select any trace")
}
// Draw the plot
plot::draw(&args, traces).context("drawing the performance plot")
}