aboutsummaryrefslogtreecommitdiff
path: root/rif/src/schema.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rif/src/schema.rs')
-rw-r--r--rif/src/schema.rs24
1 files changed, 20 insertions, 4 deletions
diff --git a/rif/src/schema.rs b/rif/src/schema.rs
index df7b6b4..28c1304 100644
--- a/rif/src/schema.rs
+++ b/rif/src/schema.rs
@@ -1,22 +1,38 @@
use identity::Identity as Id;
+use std::collections::BTreeSet;
/// A schema format backing a recipe set
-pub struct Schema {
- ingredients: BTreeSet<Ingredient>,
- worksteps: BTreeSet<Workstep>,
+pub struct Schema<I, W>
+where
+ I: Ingredient,
+ W: Workstep,
+{
+ /// Set of ingredients present in a recipe
+ pub ingredients: BTreeSet<I>,
+ /// Set of allowed work-steps in a recipe
+ pub worksteps: BTreeSet<W>,
}
/// A string-tagged ingredient in a recipe
pub trait Ingredient {
+ /// Get a human readable ingredient name
fn name(&self) -> String;
+ /// Get the ingredient slug
fn slug(&self) -> String;
+ /// A machine-efficient, random ID
fn id(&self) -> Id;
}
/// An execution step
pub trait Workstep {
+ /// Get a human readable workstep name
fn name(&self) -> String;
+ /// Get the workstep slug
+ fn slug(&self) -> String;
+ /// Get the human readable workstep description
fn description(&self) -> String;
+ /// A machine-efficient, random ID
fn id(&self) -> Id;
- async fn run(&self) -> Option<()>;
+ /// Execute some custom code for the step
+ fn run(&self) -> Option<()>;
}