CtxStack

Struct CtxStack 

Source
pub struct CtxStack { /* private fields */ }
Expand description

Nunjucks-style frame stack: inner frames shadow outer; set updates the innermost existing binding.

Values are stored as Arc so repeated reads and shallow copies of bindings can share the same Value allocation when the stack is cloned or merged (see Self::flatten).

Frame maps use [ahash::AHashMap] for faster string-key lookup on hot paths (many distinct variables).

Implementations§

Source§

impl CtxStack

Source

pub fn from_root(root: Map<String, Value>) -> Self

Source

pub fn revision(&self) -> u64

Monotonic counter; changes whenever template bindings or frames change.

Source

pub fn push_frame(&mut self)

Source

pub fn pop_frame(&mut self)

Source

pub fn get_ref(&self, name: &str) -> Option<&Value>

Borrows the innermost binding for name across frames (template context shadows outer).

Source

pub fn get(&self, name: &str) -> Value

Source

pub fn defined(&self, name: &str) -> bool

Source

pub fn set(&mut self, name: &str, value: Value)

Source

pub fn set_local(&mut self, name: &str, value: Value)

Assign in the innermost frame only (for for / loop.* bindings so inner loops can shadow).

Source

pub fn flatten(&self) -> Map<String, Value>

Outer frames first, then inner overwrites — snapshot for macro bodies.

Trait Implementations§

Source§

impl Clone for CtxStack

Source§

fn clone(&self) -> CtxStack

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CtxStack

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V