ic_query/subnet_catalog/model/classification/
specialization.rs1use serde::{Deserialize, Serialize};
2use std::str::FromStr;
3
4#[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
8#[serde(rename_all = "snake_case")]
9pub enum SubnetSpecialization {
10 None,
11 Fiduciary,
12 European,
13 Unknown,
14}
15
16impl SubnetSpecialization {
17 #[must_use]
18 pub const fn as_str(self) -> &'static str {
19 match self {
20 Self::None => "none",
21 Self::Fiduciary => "fiduciary",
22 Self::European => "european",
23 Self::Unknown => "unknown",
24 }
25 }
26}
27
28impl FromStr for SubnetSpecialization {
29 type Err = String;
30
31 fn from_str(value: &str) -> Result<Self, Self::Err> {
32 match value {
33 "none" => Ok(Self::None),
34 "fiduciary" => Ok(Self::Fiduciary),
35 "european" => Ok(Self::European),
36 "unknown" => Ok(Self::Unknown),
37 other => Err(format!(
38 "invalid value {other}; use none, fiduciary, european, or unknown"
39 )),
40 }
41 }
42}