ligen_ir/library/metadata/version/
mod.rs

1use crate::prelude::*;
2
3pub mod requirement;
4pub use requirement::*;
5
6#[derive(Shrinkwrap, Debug, Display, Clone, Serialize, Deserialize, PartialEq)]
7#[shrinkwrap(mutable)]
8pub struct Version(pub semver::Version);
9
10impl Default for Version {
11    fn default() -> Self {
12        Self(semver::Version::new(0, 1, 0))
13    }
14}
15
16impl TryFrom<&str> for Version {
17    type Error = Error;
18    fn try_from(value: &str) -> Result<Self> {
19        let version =
20            semver::Version::parse(value)
21                .map_err(|e| Error::Message(format!("Failed to parse version: {}, Reason: {}", value, e)))?;
22        let version = Self(version);
23        Ok(version)
24    }
25}