1use std::fmt::Display;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
7pub enum Name {
8 UserName(String),
10 MachineName(i32),
12}
13
14uniplate::derive_unplateable!(Name);
15
16impl Display for Name {
17 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18 match self {
19 Name::UserName(s) => write!(f, "{}", s),
20 Name::MachineName(i) => write!(f, "__{}", i),
21 }
22 }
23}
24
25impl From<String> for Name {
26 fn from(s: String) -> Self {
27 Name::UserName(s)
28 }
29}
30
31impl From<&str> for Name {
32 fn from(s: &str) -> Self {
33 Name::UserName(s.to_string())
34 }
35}
36
37impl From<i32> for Name {
38 fn from(i: i32) -> Self {
39 Name::MachineName(i)
40 }
41}