diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2021-03-18 08:57:02 +0100 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2021-03-18 08:59:31 +0100 |
commit | 9870dd0967f33d9f8bf0279eaa03294da0b55148 (patch) | |
tree | fac285d2dd8b5116ead70e5c33bbe3d75e433b09 /src/package | |
parent | 13a85ddc5768a25f985eeb7b7dd1a8de5dce87d6 (diff) |
Rewrite PackageVersionConstraint constructing
Use the TryFrom trait rather than a `::new()` constructor that can fail.
This is way more idomatic.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Diffstat (limited to 'src/package')
-rw-r--r-- | src/package/dependency/mod.rs | 4 | ||||
-rw-r--r-- | src/package/version.rs | 22 |
2 files changed, 21 insertions, 5 deletions
diff --git a/src/package/dependency/mod.rs b/src/package/dependency/mod.rs index f2fd80f..e58d0a0 100644 --- a/src/package/dependency/mod.rs +++ b/src/package/dependency/mod.rs @@ -8,6 +8,8 @@ // SPDX-License-Identifier: EPL-2.0 // +use std::convert::TryFrom; + use anyhow::anyhow; use anyhow::Result; use lazy_static::lazy_static; @@ -60,7 +62,7 @@ pub(in crate::package::dependency) fn parse_package_dependency_string_into_name_ .map(|m| String::from(m.as_str())) .ok_or_else(|| anyhow!("Could not parse version: '{}'", s))?; - let v = PackageVersionConstraint::new(vers)?; + let v = PackageVersionConstraint::try_from(vers)?; Ok((PackageName::from(name), v)) } diff --git a/src/package/version.rs b/src/package/version.rs index 0c3f7f6..9705c8d 100644 --- a/src/package/version.rs +++ b/src/package/version.rs @@ -25,10 +25,6 @@ pub struct PackageVersionConstraint { } impl PackageVersionConstraint { - pub fn new(s: String) -> Result<Self> { - Self::parser().parse(s.as_bytes()).map_err(Error::from) - } - fn parser<'a>() -> PomParser<'a, u8, Self> { (pom::parser::sym(b'=') + PackageVersion::parser()) .convert(|(constraint, version)| { @@ -53,6 +49,24 @@ impl PackageVersionConstraint { } } +impl std::convert::TryFrom<String> for PackageVersionConstraint { + type Error = anyhow::Error; + + fn try_from(s: String) -> Result<Self> { + Self::try_from(&s as &str) + } +} + +impl std::convert::TryFrom<&str> for PackageVersionConstraint { + type Error = anyhow::Error; + + fn try_from(s: &str) -> Result<Self> { + PackageVersionConstraint::parser() + .parse(s.as_bytes()) + .map_err(Error::from) + } +} + #[derive( parse_display::Display, Serialize, |