ipcap 0.1.7

🌍 A CLI & library for decoding IP addresses into state, postal code, country, coordinates, etc without internet access.
Documentation
use crate::codegen;
use crate::countries::Country;
use std::fmt::{Display, Formatter};

#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
pub enum Continent {
    Africa,
    Antarctica,
    Asia,
    Europe,
    NorthAmerica,
    Oceania,
    SouthAmerica,
}

impl Continent {
    pub fn alphabetic_code_2(&self) -> &'static str {
        match self {
            Continent::Africa => "AF",
            Continent::Antarctica => "AN",
            Continent::Asia => "AS",
            Continent::Europe => "EU",
            Continent::NorthAmerica => "NA",
            Continent::Oceania => "OC",
            Continent::SouthAmerica => "SA",
        }
    }
}

impl Display for Continent {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self {
            Continent::Africa => f.write_str("Africa"),
            Continent::Antarctica => f.write_str("Antarctica"),
            Continent::Asia => f.write_str("Asia"),
            Continent::Europe => f.write_str("Europe"),
            Continent::NorthAmerica => f.write_str("North America"),
            Continent::Oceania => f.write_str("Oceania"),
            Continent::SouthAmerica => f.write_str("South America"),
        }
    }
}

impl From<&Country> for Option<Continent> {
    fn from(value: &Country) -> Self {
        codegen!("country-to-continent")
    }
}