shadow_crypt_core/
version.rs

1#[derive(Debug, Clone, PartialEq, Eq)]
2pub enum Version {
3    V1,
4}
5
6impl Version {
7    pub fn as_str(&self) -> &'static str {
8        match self {
9            Version::V1 => "v1",
10        }
11    }
12
13    pub fn as_u8(&self) -> u8 {
14        match self {
15            Version::V1 => 1,
16        }
17    }
18}
19
20impl TryFrom<u8> for Version {
21    type Error = ();
22
23    fn try_from(value: u8) -> Result<Self, Self::Error> {
24        match value {
25            1 => Ok(Version::V1),
26            _ => Err(()),
27        }
28    }
29}
30
31pub fn is_supported_version(version: u8) -> bool {
32    matches!(version, 1)
33}
34
35#[cfg(test)]
36mod tests {
37    use super::*;
38
39    #[test]
40    fn test_version_as_str() {
41        assert_eq!(Version::V1.as_str(), "v1");
42    }
43
44    #[test]
45    fn test_version_as_u8() {
46        assert_eq!(Version::V1.as_u8(), 1);
47    }
48
49    #[test]
50    fn test_is_supported_version() {
51        assert!(is_supported_version(1));
52        assert!(!is_supported_version(0));
53        assert!(!is_supported_version(2));
54        assert!(!is_supported_version(255));
55    }
56}