1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
use std::str::FromStr; use crate::Error; /// `Feet` or `FlightLevel` #[derive(Eq, PartialEq, Debug)] pub enum AltitudeUnit { Feet, FlightLevel, } impl FromStr for AltitudeUnit { type Err = Error; /// # Examples /// /// ``` /// # use std::str::FromStr; /// # use openaip::AltitudeUnit; /// # /// assert_eq!(AltitudeUnit::from_str("F").unwrap(), AltitudeUnit::Feet); /// assert_eq!(AltitudeUnit::from_str("FL").unwrap(), AltitudeUnit::FlightLevel); /// assert!(AltitudeUnit::from_str("foobar").is_err()); /// ``` fn from_str(s: &str) -> Result<Self, Self::Err> { match s { "F" => Ok(AltitudeUnit::Feet), "FL" => Ok(AltitudeUnit::FlightLevel), _ => Err(Error::UnknownAltitudeUnit(s.to_string())), } } }