fastn_resolved/
module_thing.rs

1#[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}