summaryrefslogtreecommitdiffstats
path: root/src/package
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-03-18 08:57:02 +0100
committerMatthias Beyer <matthias.beyer@atos.net>2021-03-18 08:59:31 +0100
commit9870dd0967f33d9f8bf0279eaa03294da0b55148 (patch)
treefac285d2dd8b5116ead70e5c33bbe3d75e433b09 /src/package
parent13a85ddc5768a25f985eeb7b7dd1a8de5dce87d6 (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.rs4
-rw-r--r--src/package/version.rs22
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,