veloren_common/comp/
admin.rs1use serde::{Deserialize, Serialize};
2use specs::{Component, DerefFlaggedStorage, VecStorage};
3use strum::VariantNames;
4
5#[derive(
8 Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd, Serialize, Deserialize, VariantNames,
9)]
10pub enum AdminRole {
11 Moderator = 0,
12 Admin = 1,
13}
14
15impl core::str::FromStr for AdminRole {
16 type Err = &'static str;
17
18 fn from_str(s: &str) -> Result<Self, Self::Err> {
19 match s {
20 "mod" | "moderator" => Ok(AdminRole::Moderator),
21 "admin" => Ok(AdminRole::Admin),
22 _ => Err("Could not parse AdminRole"),
23 }
24 }
25}
26
27#[expect(clippy::to_string_trait_impl)]
28impl ToString for AdminRole {
29 fn to_string(&self) -> String {
30 match self {
31 AdminRole::Moderator => "moderator",
32 AdminRole::Admin => "admin",
33 }
34 .into()
35 }
36}
37
38#[derive(Copy, Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
39pub struct Admin(pub AdminRole);
40
41impl Component for Admin {
42 type Storage = DerefFlaggedStorage<Self, VecStorage<Self>>;
43}