pub struct RenderState<'a> {
pub loader: Option<&'a (dyn TemplateLoader + Send + Sync)>,
pub stack: Vec<String>,
pub macro_scopes: Vec<HashMap<String, MacroDef>>,
pub macro_namespaces: HashMap<String, HashMap<String, MacroDef>>,
pub macro_namespace_values: HashMap<String, HashMap<String, Value>>,
pub block_chains: Option<HashMap<String, Vec<Vec<Node>>>>,
pub super_context: Option<(String, usize)>,
pub caller_stack: Vec<CallerFrame>,
pub cyclers: Vec<CyclerState>,
pub joiners: Vec<JoinerState>,
pub rng: SmallRng,
/* private fields */
}Expand description
Per-render state: optional loader, include cycle stack, macro scopes, and block inheritance for extends.
Fields§
§loader: Option<&'a (dyn TemplateLoader + Send + Sync)>§stack: Vec<String>§macro_scopes: Vec<HashMap<String, MacroDef>>§macro_namespaces: HashMap<String, HashMap<String, MacroDef>>{% import "x" as ns %} — macros callable as ns.macro_name().
macro_namespace_values: HashMap<String, HashMap<String, Value>>Top-level {% set %} exports from each import … as ns namespace (ns.name): single- and
multi-target = forms (same value per target) and block {% set x %}…{% endset %}, evaluated
in source order. Also used with macro_namespaces for resolving ns.*.
block_chains: Option<HashMap<String, Vec<Vec<Node>>>>Per-block inheritance: innermost template first (child → parent → …) for {{ super() }}.
super_context: Option<(String, usize)>When rendering a block layer, Some((block_name, layer_index)) for super() resolution.
caller_stack: Vec<CallerFrame>Innermost {% call %} frame for caller() / caller(args…) inside macro execution.
cyclers: Vec<CyclerState>Stateful cycler(...) instances (index matches handle object).
joiners: Vec<JoinerState>Stateful joiner(...) instances.
rng: SmallRngPRNG for | random (seed from Environment::random_seed when set).