Skip to main content

cggtts/header/
version.rs

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}