cairo_lang_runner/
clap.rs

1use clap::ValueEnum;
2use serde::Serialize;
3
4use crate::profiling::ProfilerConfig;
5
6/// A clap-arg wrapper for Option<[ProfilerConfig]>.
7#[derive(ValueEnum, Clone, Default, Debug, Serialize, PartialEq, Eq, Hash)]
8#[serde(rename_all = "kebab-case")]
9pub enum RunProfilerConfigArg {
10    #[default]
11    None,
12    Cairo,
13    Scoped,
14    Sierra,
15}
16impl TryFrom<RunProfilerConfigArg> for ProfilerConfig {
17    type Error = ();
18    fn try_from(val: RunProfilerConfigArg) -> Result<Self, Self::Error> {
19        Ok(match val {
20            RunProfilerConfigArg::None => return Err(()),
21            RunProfilerConfigArg::Cairo => ProfilerConfig::Cairo,
22            RunProfilerConfigArg::Scoped => ProfilerConfig::Scoped,
23            RunProfilerConfigArg::Sierra => ProfilerConfig::Sierra,
24        })
25    }
26}