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
use serde::{Deserialize, Serialize}; use std::convert::TryFrom; use std::fmt; #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)] pub enum SpecVersion { #[serde(rename = "0.3")] V03, #[serde(rename = "1.0")] V10, } impl fmt::Display for SpecVersion { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { SpecVersion::V03 => write!(f, "0.3"), SpecVersion::V10 => write!(f, "1.0"), } } } impl TryFrom<String> for SpecVersion { type Error = String; fn try_from(value: String) -> Result<Self, String> { match value.as_str() { "0.3" => Ok(SpecVersion::V03), "1.0" => Ok(SpecVersion::V10), _ => Err(format!("Invalid specversion {}", value)), } } }