1use crate::errors::ParsingError;
2
3#[cfg(feature = "serde")]
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Copy, Default, PartialEq, PartialOrd, Eq, Ord, Hash)]
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8pub enum Version {
9 #[default]
10 Version2E,
11}
12
13impl std::str::FromStr for Version {
14 type Err = ParsingError;
15 fn from_str(s: &str) -> Result<Self, Self::Err> {
16 if s.eq("2E") {
17 Ok(Self::Version2E)
18 } else {
19 Err(ParsingError::NonSupportedRevision)
20 }
21 }
22}
23
24impl std::fmt::Display for Version {
25 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
26 match self {
27 Self::Version2E => write!(f, "2E"),
28 }
29 }
30}
31
32#[cfg(test)]
33mod test {
34 use crate::prelude::Version;
35 use std::str::FromStr;
36
37 #[test]
38 fn version_parsing() {
39 let version_2e = Version::from_str("2E").unwrap();
40 assert_eq!(version_2e.to_string(), "2E");
41 }
42}