world-region 0.6.0

A Rust crate providing enums and conversions for World regions and their subregions, building on the africa, europe, north-america, etc crates.
Documentation
// ---------------- [ File: src/abbreviation.rs ]
crate::ix!();

// Implement Abbreviation by delegating to inner enums
impl Abbreviation for WorldRegion {
    fn abbreviation(&self) -> &'static str {
        match self {
            WorldRegion::NorthAmerica(r)               => r.abbreviation(),
            WorldRegion::CentralAmerica(r)             => r.abbreviation(),
            WorldRegion::SouthAmerica(r)               => r.abbreviation(),
            WorldRegion::Europe(r)                     => r.abbreviation(),
            WorldRegion::Africa(r)                     => r.abbreviation(),
            WorldRegion::Asia(r)                       => r.abbreviation(),
            WorldRegion::AustraliaOceaniaAntarctica(r) => r.abbreviation(),
        }
    }
}

impl TryFromAbbreviation for WorldRegion {

    type Error = TryFromAbbreviationError;

    fn try_from_abbreviation(abbr: &str) -> Result<Self, Self::Error> {

        if let Ok(x) = NorthAmericaRegion::try_from_abbreviation(abbr)               { return Ok(WorldRegion::NorthAmerica(x)); }
        if let Ok(x) = CentralAmericaRegion::try_from_abbreviation(abbr)             { return Ok(WorldRegion::CentralAmerica(x)); }
        if let Ok(x) = SouthAmericaRegion::try_from_abbreviation(abbr)               { return Ok(WorldRegion::SouthAmerica(x)); }
        if let Ok(x) = EuropeRegion::try_from_abbreviation(abbr)                     { return Ok(WorldRegion::Europe(x)); }
        if let Ok(x) = AfricaRegion::try_from_abbreviation(abbr)                     { return Ok(WorldRegion::Africa(x)); }
        if let Ok(x) = AsiaRegion::try_from_abbreviation(abbr)                       { return Ok(WorldRegion::Asia(x)); }
        if let Ok(x) = AustraliaOceaniaAntarcticaRegion::try_from_abbreviation(abbr) { return Ok(WorldRegion::AustraliaOceaniaAntarctica(x)); }

        Err(TryFromAbbreviationError::InvalidAbbreviation)
    }
}