summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-07-22 19:47:22 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-07-22 19:47:56 +0200
commit584302e4554430ca13ccb3b0b59f845aceab7caf (patch)
treef1eb51d6a80072b81d8a4707ae2804dc0e12e903
parent571603de95416df63f092b688f54e7630964de5f (diff)
downloadrebel-584302e4554430ca13ccb3b0b59f845aceab7caf.tar
rebel-584302e4554430ca13ccb3b0b59f845aceab7caf.zip
Make TaskRef a newtype wrapper
-rw-r--r--src/main.rs2
-rw-r--r--src/types.rs11
2 files changed, 10 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 2158e50..25bc6c4 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -37,7 +37,7 @@ fn main() {
let mut rsv = resolve::Resolver::new(&tasks);
for task in opts.tasks {
- let errors = rsv.add_goal(&task);
+ let errors = rsv.add_goal(&TaskRef(task));
if !errors.is_empty() {
for error in errors {
eprintln!("{}", error);
diff --git a/src/types.rs b/src/types.rs
index 2752e1d..8649042 100644
--- a/src/types.rs
+++ b/src/types.rs
@@ -36,7 +36,14 @@ pub type InputHash = StringHash;
pub type OutputHasher = Sha256;
pub type OutputHash = StringHash;
-pub type TaskRef = String;
+#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, Hash)]
+pub struct TaskRef(pub String);
+
+impl Display for TaskRef {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.0.fmt(f)
+ }
+}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct TaskDef {
@@ -65,7 +72,7 @@ pub struct TaskMap(pub HashMap<String, TaskDef>);
impl TaskMap {
pub fn get(&self, task: &TaskRef) -> Option<&TaskDef> {
- self.0.get(task)
+ self.0.get(&task.0)
}
}