aboutsummaryrefslogtreecommitdiff
path: root/src/actor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/actor.rs')
-rw-r--r--src/actor.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/actor.rs b/src/actor.rs
new file mode 100644
index 0000000..3b03fa6
--- /dev/null
+++ b/src/actor.rs
@@ -0,0 +1,29 @@
+use crate::number::Number;
+
+#[derive(Clone)]
+pub enum Type {
+ String,
+ Record {
+ name: String,
+ fields: Vec<Slot>
+ },
+ AnyNumber,
+ NumberInRange {
+ min: Option<Number>,
+ max: Option<Number>,
+ },
+ List {
+ contents: Box<Type>,
+ },
+}
+
+#[derive(Clone)]
+pub struct Slot {
+ pub name: String,
+ pub r#type: Type,
+}
+
+pub trait Actorful {
+ fn inputs() -> Vec<Slot>;
+ fn outputs() -> Vec<Slot>;
+}