1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#[derive(Debug, Eq, PartialEq, Copy, Clone)]
pub enum Category {
    Fixed,
    Select,
    Lorem,
    Name,
    Primitive,
    Internet,
    Company,
    Address,
    DateTime,
    FileSystem,
}

impl Category {
    pub fn all_list() -> Vec<Self> {
        use Category::*;
        vec![
            Fixed, Select, Lorem, Name, Primitive, Internet, Company, Address, DateTime, FileSystem,
        ]
    }
}

impl std::fmt::Display for Category {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
        use Category::*;
        let s: String = match self {
            Fixed => "Fixed",
            Select => "Select",
            Lorem => "Lorem",
            Name => "Name",
            Primitive => "Primitive",
            Internet => "Internet",
            Company => "Company",
            Address => "Address",
            DateTime => "DateTime",
            FileSystem => "FileSystem",
        }
        .to_string();
        write!(f, "{}", s)
    }
}