summaryrefslogtreecommitdiffstats
path: root/src/package/dependency/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/package/dependency/build.rs')
-rw-r--r--src/package/dependency/build.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/package/dependency/build.rs b/src/package/dependency/build.rs
index 78d3fad..42c0763 100644
--- a/src/package/dependency/build.rs
+++ b/src/package/dependency/build.rs
@@ -12,22 +12,25 @@ use anyhow::Result;
use serde::Deserialize;
use serde::Serialize;
-use crate::package::dependency::ParseDependency;
-use crate::package::dependency::StringEqual;
use crate::package::PackageName;
use crate::package::PackageVersionConstraint;
+use crate::package::dependency::ParseDependency;
+use crate::package::dependency::StringEqual;
+use crate::package::dependency::condition::Condition;
/// A dependency that is packaged and is only required during build time
#[derive(Serialize, Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)]
#[serde(untagged)]
pub enum BuildDependency {
Simple(String),
+ Conditional(String, Condition),
}
impl AsRef<str> for BuildDependency {
fn as_ref(&self) -> &str {
match self {
BuildDependency::Simple(name) => name,
+ BuildDependency::Conditional(name, _) => name,
}
}
}
@@ -36,6 +39,7 @@ impl StringEqual for BuildDependency {
fn str_equal(&self, s: &str) -> bool {
match self {
BuildDependency::Simple(name) => name == s,
+ BuildDependency::Conditional(name, _) => name == s,
}
}
}
@@ -61,6 +65,7 @@ mod tests {
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),
+ other => panic!("Unexpected deserialization to other variant: {:?}", other),
}
}
}