fastn_resolved/
module_thing.rs1#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
2pub enum ModuleThing {
3 Component(ComponentModuleThing),
4 Variable(VariableModuleThing),
5 Formula(FormulaModuleThing),
6}
7
8impl ModuleThing {
9 pub fn component(
10 name: String,
11 kind: fastn_resolved::KindData,
12 arguments: Vec<fastn_resolved::Argument>,
13 ) -> Self {
14 ModuleThing::Component(ComponentModuleThing::new(name, kind, arguments))
15 }
16
17 pub fn variable(name: String, kind: fastn_resolved::KindData) -> Self {
18 ModuleThing::Variable(VariableModuleThing::new(name, kind))
19 }
20
21 pub fn function(name: String, kind: fastn_resolved::KindData) -> Self {
22 ModuleThing::Formula(FormulaModuleThing::new(name, kind))
23 }
24
25 pub fn get_kind(&self) -> fastn_resolved::KindData {
26 match self {
27 fastn_resolved::ModuleThing::Component(c) => c.kind.clone(),
28 fastn_resolved::ModuleThing::Variable(v) => v.kind.clone(),
29 fastn_resolved::ModuleThing::Formula(f) => f.kind.clone(),
30 }
31 }
32
33 pub fn get_name(&self) -> String {
34 match self {
35 fastn_resolved::ModuleThing::Component(c) => c.name.clone(),
36 fastn_resolved::ModuleThing::Variable(v) => v.name.clone(),
37 fastn_resolved::ModuleThing::Formula(f) => f.name.clone(),
38 }
39 }
40}
41
42#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
43pub struct ComponentModuleThing {
44 pub name: String,
45 pub kind: fastn_resolved::KindData,
46 pub arguments: Vec<fastn_resolved::Argument>,
47}
48
49impl ComponentModuleThing {
50 pub fn new(
51 name: String,
52 kind: fastn_resolved::KindData,
53 arguments: Vec<fastn_resolved::Argument>,
54 ) -> Self {
55 ComponentModuleThing {
56 name,
57 kind,
58 arguments,
59 }
60 }
61}
62
63#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
64pub struct FormulaModuleThing {
65 pub name: String,
66 pub kind: fastn_resolved::KindData,
67}
68
69impl FormulaModuleThing {
70 pub fn new(name: String, kind: fastn_resolved::KindData) -> Self {
71 FormulaModuleThing { name, kind }
72 }
73}
74
75#[derive(Debug, Clone, PartialEq, serde::Deserialize, serde::Serialize)]
76pub struct VariableModuleThing {
77 pub name: String,
78 pub kind: fastn_resolved::KindData,
79}
80
81impl VariableModuleThing {
82 pub fn new(name: String, kind: fastn_resolved::KindData) -> Self {
83 VariableModuleThing { name, kind }
84 }
85}