summaryrefslogtreecommitdiffstats
path: root/src/package/dependency/runtime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/package/dependency/runtime.rs')
-rw-r--r--src/package/dependency/runtime.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/package/dependency/runtime.rs b/src/package/dependency/runtime.rs
index 3916b22..26679e2 100644
--- a/src/package/dependency/runtime.rs
+++ b/src/package/dependency/runtime.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 required during runtime
#[derive(Serialize, Deserialize, Clone, Debug, Hash, Eq, PartialEq, Ord, PartialOrd)]
#[serde(untagged)]
pub enum Dependency {
Simple(String),
+ Conditional(String, Condition),
}
impl AsRef<str> for Dependency {
fn as_ref(&self) -> &str {
match self {
Dependency::Simple(name) => name,
+ Dependency::Conditional(name, _) => name,
}
}
}
@@ -36,6 +39,7 @@ impl StringEqual for Dependency {
fn str_equal(&self, s: &str) -> bool {
match self {
Dependency::Simple(name) => name == s,
+ Dependency::Conditional(name, _) => name == s,
}
}
}
@@ -68,6 +72,7 @@ mod tests {
match s.setting {
Dependency::Simple(name) => assert_eq!(name, "foo", "Expected 'foo', got {}", name),
+ other => panic!("Unexpected deserialization to other variant: {:?}", other),
}
}
}