Skip to main content

interstice_abi/schema/
version.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
4pub struct Version {
5    pub major: u16,
6    pub minor: u16,
7    pub patch: u16,
8}
9
10impl Into<String> for Version {
11    fn into(self) -> String {
12        format!("{}.{}.{}", self.major, self.minor, self.patch)
13    }
14}
15impl Into<Version> for &str {
16    fn into(self) -> Version {
17        let parts: Vec<&str> = self.split('.').collect();
18        let major = parts.get(0).and_then(|s| s.parse().ok()).unwrap_or(0);
19        let minor = parts.get(1).and_then(|s| s.parse().ok()).unwrap_or(0);
20        let patch = parts.get(2).and_then(|s| s.parse().ok()).unwrap_or(0);
21        Version {
22            major,
23            minor,
24            patch,
25        }
26    }
27}