cxx_build/gen/
guard.rs

1use crate::gen::out::OutFile;
2use crate::syntax::symbol::Symbol;
3use crate::syntax::Pair;
4use std::fmt::{self, Display};
5
6pub(crate) struct Guard {
7    kind: &'static str,
8    symbol: Symbol,
9}
10
11impl Guard {
12    pub fn new(out: &mut OutFile, kind: &'static str, name: &Pair) -> Self {
13        let symbol = name.to_symbol();
14        out.pragma.dollar_in_identifier |= symbol.contains('$');
15        Guard { kind, symbol }
16    }
17}
18
19impl Display for Guard {
20    fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
21        formatter.write_fmt(format_args!("{0}_{1}", self.kind, self.symbol))write!(formatter, "{}_{}", self.kind, self.symbol)
22    }
23}