mcsr_ranked_api/user/
identifier.rs1use std::fmt::Display;
2
3use serde::Serialize;
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
8pub enum UserIdentifier<'a> {
9 Uuid(Uuid),
11 Nickname(&'a str),
13 DiscordId(u64),
15}
16impl Display for UserIdentifier<'_> {
17 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18 match &self {
19 UserIdentifier::Uuid(uuid) => write!(f, "{}", uuid),
20 UserIdentifier::Nickname(name) => write!(f, "{}", name),
21 UserIdentifier::DiscordId(snowflake) => write!(f, "discord.{snowflake}"),
22 }
23 }
24}
25
26impl Serialize for UserIdentifier<'_> {
27 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
28 where
29 S: serde::Serializer,
30 {
31 serializer.serialize_newtype_struct("UserIdentifier", &self.to_string())
32 }
33}