turtle-build 0.3.5

Ninja-compatible build system for high-level programming languages
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use super::chain_map::ChainMap;
use crate::ast;

#[derive(Clone, Debug)]
pub struct ModuleState<'a> {
    pub rules: ChainMap<'a, String, ast::Rule>,
    pub variables: ChainMap<'a, String, String>,
}

impl<'a> ModuleState<'a> {
    pub fn fork(&'a self) -> Self {
        Self {
            rules: self.rules.fork(),
            variables: self.variables.fork(),
        }
    }
}