1use std::str::FromStr;
2
3#[derive(Debug, PartialEq, Eq, Clone, Copy)]
4pub enum OptimizationLevel {
5 Off,
7 Speed,
9}
10
11impl FromStr for OptimizationLevel {
12 type Err = ();
13
14 fn from_str(val: &str) -> Result<Self, Self::Err> {
15 match val {
16 "0" => Ok(OptimizationLevel::Off),
17 "1" => Ok(OptimizationLevel::Speed),
18 _ => Err(()),
19 }
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26
27 #[test]
28 fn from_str() {
29 let opt: OptimizationLevel = "0".parse().unwrap();
30 assert_eq!(opt, OptimizationLevel::Off);
31 let opt: OptimizationLevel = "1".parse().unwrap();
32 assert_eq!(opt, OptimizationLevel::Speed);
33
34 assert!("2".parse::<OptimizationLevel>().is_err());
35 }
36}