1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
use crate::util::errors::CargoResult; use semver::Version; pub trait ToSemver { fn to_semver(self) -> CargoResult<Version>; } impl ToSemver for Version { fn to_semver(self) -> CargoResult<Version> { Ok(self) } } impl<'a> ToSemver for &'a str { fn to_semver(self) -> CargoResult<Version> { match Version::parse(self) { Ok(v) => Ok(v), Err(..) => Err(failure::format_err!("cannot parse '{}' as a semver", self)), } } } impl<'a> ToSemver for &'a String { fn to_semver(self) -> CargoResult<Version> { (**self).to_semver() } } impl<'a> ToSemver for &'a Version { fn to_semver(self) -> CargoResult<Version> { Ok(self.clone()) } }