Skip to main content

turtle_build/ast/
statement.rs

1use super::{Build, DefaultOutput, Include, Pool, Rule, Submodule, VariableDefinition};
2
3/// A statement.
4#[derive(Clone, Debug, PartialEq, Eq)]
5pub enum Statement {
6    /// A build statement.
7    Build(Build),
8    /// A default statement.
9    Default(DefaultOutput),
10    /// An include statement.
11    Include(Include),
12    /// A pool statement.
13    Pool(Pool),
14    /// A rule statement.
15    Rule(Rule),
16    /// A submodule statement.
17    Submodule(Submodule),
18    /// A variable definition.
19    VariableDefinition(VariableDefinition),
20}
21
22impl From<Build> for Statement {
23    fn from(build: Build) -> Self {
24        Self::Build(build)
25    }
26}
27
28impl From<DefaultOutput> for Statement {
29    fn from(default: DefaultOutput) -> Self {
30        Self::Default(default)
31    }
32}
33
34impl From<Include> for Statement {
35    fn from(include: Include) -> Self {
36        Self::Include(include)
37    }
38}
39
40impl From<Pool> for Statement {
41    fn from(pool: Pool) -> Self {
42        Self::Pool(pool)
43    }
44}
45
46impl From<Rule> for Statement {
47    fn from(rule: Rule) -> Self {
48        Self::Rule(rule)
49    }
50}
51
52impl From<Submodule> for Statement {
53    fn from(submodule: Submodule) -> Self {
54        Self::Submodule(submodule)
55    }
56}
57
58impl From<VariableDefinition> for Statement {
59    fn from(variable_definition: VariableDefinition) -> Self {
60        Self::VariableDefinition(variable_definition)
61    }
62}