world_region/
abbreviation.rs

1// ---------------- [ File: src/abbreviation.rs ]
2crate::ix!();
3
4// Implement Abbreviation by delegating to inner enums
5impl Abbreviation for WorldRegion {
6    fn abbreviation(&self) -> &'static str {
7        match self {
8            WorldRegion::NorthAmerica(r)               => r.abbreviation(),
9            WorldRegion::CentralAmerica(r)             => r.abbreviation(),
10            WorldRegion::SouthAmerica(r)               => r.abbreviation(),
11            WorldRegion::Europe(r)                     => r.abbreviation(),
12            WorldRegion::Africa(r)                     => r.abbreviation(),
13            WorldRegion::Asia(r)                       => r.abbreviation(),
14            WorldRegion::AustraliaOceaniaAntarctica(r) => r.abbreviation(),
15        }
16    }
17}
18
19impl TryFromAbbreviation for WorldRegion {
20
21    type Error = TryFromAbbreviationError;
22
23    fn try_from_abbreviation(abbr: &str) -> Result<Self, Self::Error> {
24
25        if let Ok(x) = NorthAmericaRegion::try_from_abbreviation(abbr)               { return Ok(WorldRegion::NorthAmerica(x)); }
26        if let Ok(x) = CentralAmericaRegion::try_from_abbreviation(abbr)             { return Ok(WorldRegion::CentralAmerica(x)); }
27        if let Ok(x) = SouthAmericaRegion::try_from_abbreviation(abbr)               { return Ok(WorldRegion::SouthAmerica(x)); }
28        if let Ok(x) = EuropeRegion::try_from_abbreviation(abbr)                     { return Ok(WorldRegion::Europe(x)); }
29        if let Ok(x) = AfricaRegion::try_from_abbreviation(abbr)                     { return Ok(WorldRegion::Africa(x)); }
30        if let Ok(x) = AsiaRegion::try_from_abbreviation(abbr)                       { return Ok(WorldRegion::Asia(x)); }
31        if let Ok(x) = AustraliaOceaniaAntarcticaRegion::try_from_abbreviation(abbr) { return Ok(WorldRegion::AustraliaOceaniaAntarctica(x)); }
32
33        Err(TryFromAbbreviationError::InvalidAbbreviation)
34    }
35}