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