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
use clap::ValueEnum;
use serde::{Deserialize, Serialize};
use strum::{Display, EnumIter, EnumString};

#[derive(Debug, Clone, Copy, Serialize, Deserialize, ValueEnum, Display, EnumIter, EnumString)]
#[strum(serialize_all = "lowercase")]
#[serde(rename_all = "lowercase")]
pub enum StateType {
    Closed,
    Open,
    All,
}

impl StateType {
    pub fn available_for_choosing() -> [StateType; 2] {
        use StateType::*;
        [Closed, Open]
    }

    pub fn is_done(&self) -> bool {
        match self {
            StateType::Closed => true,
            StateType::Open => false,
            StateType::All => false,
        }
    }
}