mini_builder_rs/evaluator/
dependencies.rs1use std::collections::HashSet;
2
3pub struct Dependencies {
6 pub variable_dependencies: HashSet<String>,
7 pub function_dependencies: HashSet<String>,
8 pub builder_dependencies: HashSet<String>,
9}
10
11impl Dependencies {
12 pub fn empty() -> Self {
13 Self {
14 variable_dependencies: HashSet::new(),
15 function_dependencies: HashSet::new(),
16 builder_dependencies: HashSet::new(),
17 }
18 }
19
20 pub fn add_variable(&mut self, name: impl ToString) {
21 self.variable_dependencies.insert(name.to_string());
22 }
23
24 pub fn add_function(&mut self, name: impl ToString) {
25 self.function_dependencies.insert(name.to_string());
26 }
27
28 pub fn add_builder(&mut self, name: impl ToString) {
29 self.builder_dependencies.insert(name.to_string());
30 }
31
32 pub fn contains_variable(&self, name: &str) -> bool {
33 self.variable_dependencies.contains(name)
34 }
35
36 pub fn contains_function(&self, name: &str) -> bool {
37 self.function_dependencies.contains(name)
38 }
39
40 pub fn contains_builder(&self, name: &str) -> bool {
41 self.builder_dependencies.contains(name)
42 }
43
44 pub fn iter_builder_dependencies(&self) -> impl Iterator<Item = &str> {
45 self.builder_dependencies.iter().map(|x| x.as_str())
46 }
47
48 pub fn iter_variable_dependencies(&self) -> impl Iterator<Item = &str> {
49 self.variable_dependencies.iter().map(|x| x.as_str())
50 }
51}