use anyhow::bail;
use std::str::FromStr;
#[derive(PartialEq, Eq)]
pub enum WasmOptLevel {
Default,
Off,
One,
Two,
Three,
Four,
S,
Z,
}
impl FromStr for WasmOptLevel {
type Err = anyhow::Error;
fn from_str(s: &str) -> anyhow::Result<Self, Self::Err> {
Ok(match s {
"" => Self::Default,
"0" => Self::Off,
"1" => Self::One,
"2" => Self::Two,
"3" => Self::Three,
"4" => Self::Four,
"s" | "S" => Self::S,
"z" | "Z" => Self::Z,
_ => bail!("unknown wasm-opt level `{}`", s),
})
}
}
impl AsRef<str> for WasmOptLevel {
fn as_ref(&self) -> &str {
match self {
Self::Default => "",
Self::Off => "0",
Self::One => "1",
Self::Two => "2",
Self::Three => "3",
Self::Four => "4",
Self::S => "s",
Self::Z => "z",
}
}
}
impl Default for WasmOptLevel {
fn default() -> Self {
Self::Default
}
}