turtle-build 0.4.0

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
18
use super::chain_map::ChainMap;
use crate::ast;
use std::sync::Arc;

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

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