lit_node_core/models/
resource_prefix.rs

1use crate::constants::{
2    LIT_RESOURCE_PREFIX_ACC, LIT_RESOURCE_PREFIX_LA, LIT_RESOURCE_PREFIX_PD,
3    LIT_RESOURCE_PREFIX_PKP,
4};
5use std::fmt;
6use std::str::FromStr;
7
8#[derive(Clone, Copy, Debug, PartialEq, Eq)]
9#[allow(clippy::upper_case_acronyms)]
10pub enum LitResourcePrefix {
11    ACC,
12    PKP,
13    LA,
14    PD,
15}
16
17impl fmt::Display for LitResourcePrefix {
18    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
19        match self {
20            Self::ACC => write!(f, "{}", LIT_RESOURCE_PREFIX_ACC),
21            Self::PKP => write!(f, "{}", LIT_RESOURCE_PREFIX_PKP),
22            Self::LA => write!(f, "{}", LIT_RESOURCE_PREFIX_LA),
23            Self::PD => write!(f, "{}", LIT_RESOURCE_PREFIX_PD),
24        }
25    }
26}
27
28#[derive(Debug, PartialEq, Eq)]
29pub struct ParseLitResourcePrefixError;
30
31impl FromStr for LitResourcePrefix {
32    type Err = ParseLitResourcePrefixError;
33
34    fn from_str(s: &str) -> Result<Self, Self::Err> {
35        match s {
36            LIT_RESOURCE_PREFIX_ACC => Ok(Self::ACC),
37            LIT_RESOURCE_PREFIX_PKP => Ok(Self::PKP),
38            LIT_RESOURCE_PREFIX_LA => Ok(Self::LA),
39            LIT_RESOURCE_PREFIX_PD => Ok(Self::PD),
40            _ => Err(ParseLitResourcePrefixError),
41        }
42    }
43}