24 lines
673 B
Rust
24 lines
673 B
Rust
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum Role { User, Admin }
|
|
|
|
impl std::fmt::Display for Role {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
match self {
|
|
Role::User => write!(f, "user"),
|
|
Role::Admin => write!(f, "admin"),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl std::str::FromStr for Role {
|
|
type Err = String;
|
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
match s {
|
|
"user" => Ok(Role::User),
|
|
"admin" => Ok(Role::Admin),
|
|
other => Err(format!("Unknown role: {other}")),
|
|
}
|
|
}
|
|
}
|