scarb 0.5.2

The Cairo package manager
Documentation
use anyhow::Result;
use semver::Version;

pub trait ToVersion {
    fn to_version(self) -> Result<Version>;
}

impl ToVersion for Version {
    fn to_version(self) -> Result<Version> {
        Ok(self)
    }
}

impl<'a> ToVersion for &'a str {
    fn to_version(self) -> Result<Version> {
        Version::parse(self.trim())
            .map_err(|_| anyhow::format_err!("cannot parse '{}' as a semver", self))
    }
}

impl<'a> ToVersion for &'a String {
    fn to_version(self) -> Result<Version> {
        (**self).to_version()
    }
}

impl<'a> ToVersion for &'a Version {
    fn to_version(self) -> Result<Version> {
        Ok(self.clone())
    }
}