summaryrefslogtreecommitdiffstats
path: root/src/package
diff options
context:
space:
mode:
Diffstat (limited to 'src/package')
-rw-r--r--src/package/dependency/build.rs24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/package/dependency/build.rs b/src/package/dependency/build.rs
index 4fb9f74..78d3fad 100644
--- a/src/package/dependency/build.rs
+++ b/src/package/dependency/build.rs
@@ -19,24 +19,30 @@ use crate::package::PackageVersionConstraint;
/// A dependency that is packaged and is only required during build time
#[derive(Serialize, Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)]
-#[serde(transparent)]
-pub struct BuildDependency(String);
+#[serde(untagged)]
+pub enum BuildDependency {
+ Simple(String),
+}
impl AsRef<str> for BuildDependency {
fn as_ref(&self) -> &str {
- self.0.as_ref()
+ match self {
+ BuildDependency::Simple(name) => name,
+ }
}
}
impl StringEqual for BuildDependency {
fn str_equal(&self, s: &str) -> bool {
- self.0 == s
+ match self {
+ BuildDependency::Simple(name) => name == s,
+ }
}
}
impl ParseDependency for BuildDependency {
fn parse_as_name_and_version(&self) -> Result<(PackageName, PackageVersionConstraint)> {
- crate::package::dependency::parse_package_dependency_string_into_name_and_version(&self.0)
+ crate::package::dependency::parse_package_dependency_string_into_name_and_version(self.as_ref())
}
}
@@ -52,10 +58,10 @@ mod tests {
#[test]
fn test_parse_dependency() {
- let dependency_str = r#"setting = "foo""#;
- let d: TestSetting = toml::from_str(dependency_str).unwrap();
-
- assert_eq!(d.setting.0, "foo");
+ let s: TestSetting = toml::from_str(r#"setting = "foo""#).expect("Parsing TestSetting failed");
+ match s.setting {
+ BuildDependency::Simple(name) => assert_eq!(name, "foo", "Expected 'foo', got {}", name),
+ }
}
}