interstice_abi/schema/
version.rs1use 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}