ligen_ir/library/metadata/version/
mod.rs1use 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}