use std::fmt::Display;
use std::str::FromStr;
use serde::{Deserialize, Serialize};
#[derive(PartialEq, Eq, Hash, Serialize, Deserialize, Debug, Clone, Copy)]
#[serde(rename_all = "lowercase")]
pub enum Region {
EU,
AP,
NA,
BR,
LATAM,
KR,
ESPORTS,
PBE,
}
impl Display for Region {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let str = match self {
Region::EU => "eu",
Region::AP => "ap",
Region::NA => "na",
Region::BR => "br",
Region::LATAM => "latam",
Region::KR => "kr",
Region::ESPORTS => "esports",
Region::PBE => "pbe",
}
.to_string();
write!(f, "{str}")
}
}
impl FromStr for Region {
type Err = ();
fn from_str(s: &str) -> Result<Region, ()> {
match s.to_lowercase().as_str() {
"eu" => Ok(Region::EU),
"ap" => Ok(Region::AP),
"na" => Ok(Region::NA),
"br" => Ok(Region::BR),
"latam" => Ok(Region::LATAM),
"kr" => Ok(Region::KR),
"esports" => Ok(Region::ESPORTS),
"pbe" => Ok(Region::PBE),
_ => Err(()),
}
}
}