proc_macro_assertions/
context.rs

1use super::ident_generator::IdentGenerator;
2
3/// The context passed to each generation stage of [`Generatable`](crate::generatable::Generatable) types
4#[non_exhaustive]
5pub struct Context<'ctx> {
6    requires_nonconstant_code: bool,
7    /// The ident generator used to generate unique idents across all templates.
8    pub ident_generator: &'ctx mut dyn IdentGenerator,
9}
10
11impl<'ctx> Context<'ctx> {
12    pub fn new(ident_generator: &mut dyn IdentGenerator) -> Context<'_> {
13        Context {
14            requires_nonconstant_code: false,
15            ident_generator,
16        }
17    }
18    pub fn set_require_nonconstant_code(&mut self) {
19        self.requires_nonconstant_code = true;
20    }
21
22    #[must_use]
23    pub const fn requires_nonconstant_code(&self) -> bool {
24        self.requires_nonconstant_code
25    }
26}