Skip to main content

turtle_build/ast/
statement.rs

1use super::{Build, DefaultOutput, Include, 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 rule statement.
13    Rule(Rule),
14    /// A submodule statement.
15    Submodule(Submodule),
16    /// A variable definition.
17    VariableDefinition(VariableDefinition),
18}
19
20impl From<Build> for Statement {
21    fn from(build: Build) -> Self {
22        Self::Build(build)
23    }
24}
25
26impl From<DefaultOutput> for Statement {
27    fn from(default: DefaultOutput) -> Self {
28        Self::Default(default)
29    }
30}
31
32impl From<Include> for Statement {
33    fn from(include: Include) -> Self {
34        Self::Include(include)
35    }
36}
37
38impl From<Rule> for Statement {
39    fn from(rule: Rule) -> Self {
40        Self::Rule(rule)
41    }
42}
43
44impl From<Submodule> for Statement {
45    fn from(submodule: Submodule) -> Self {
46        Self::Submodule(submodule)
47    }
48}
49
50impl From<VariableDefinition> for Statement {
51    fn from(variable_definition: VariableDefinition) -> Self {
52        Self::VariableDefinition(variable_definition)
53    }
54}