use xbox::models::Xuid;
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum Player {
Gamertag(String),
Xuid(Xuid),
}
impl Player {
pub fn gamertag(gamertag: impl Into<String>) -> Self {
Self::Gamertag(gamertag.into())
}
pub fn xuid(xuid: impl Into<Xuid>) -> Self {
Self::Xuid(xuid.into())
}
}
impl From<Xuid> for Player {
fn from(xuid: Xuid) -> Self {
Self::Xuid(xuid)
}
}
impl From<&Xuid> for Player {
fn from(xuid: &Xuid) -> Self {
Self::Xuid(xuid.clone())
}
}
impl std::fmt::Display for Player {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Gamertag(gamertag) => write!(f, "{gamertag}"),
Self::Xuid(xuid) => write!(f, "{xuid}"),
}
}
}