ic_query/subnet_catalog/model/classification/
specialization.rs1use serde::{Deserialize, Serialize};
6use std::str::FromStr;
7
8#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
15#[serde(rename_all = "snake_case")]
16pub enum SubnetSpecialization {
17 None,
19 Fiduciary,
21 European,
23 Unknown,
25}
26
27impl SubnetSpecialization {
28 #[must_use]
30 pub const fn as_str(self) -> &'static str {
31 match self {
32 Self::None => "none",
33 Self::Fiduciary => "fiduciary",
34 Self::European => "european",
35 Self::Unknown => "unknown",
36 }
37 }
38}
39
40impl FromStr for SubnetSpecialization {
41 type Err = String;
42
43 fn from_str(value: &str) -> Result<Self, Self::Err> {
44 match value {
45 "none" => Ok(Self::None),
46 "fiduciary" => Ok(Self::Fiduciary),
47 "european" => Ok(Self::European),
48 "unknown" => Ok(Self::Unknown),
49 other => Err(format!(
50 "invalid value {other}; use none, fiduciary, european, or unknown"
51 )),
52 }
53 }
54}