Struct SymbolTable

Source
pub struct SymbolTable<'gc, C: CustomTypes<S>, S: System<C>>(/* private fields */);
Expand description

Holds a collection of variables in an execution context.

SymbolTable has utilities to extract variables from an abstract syntax tree, or to explicitly define variables. Simple methods are provided to perform value lookups in the table.

Implementations§

Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> SymbolTable<'gc, C, S>

Source

pub fn define_or_redefine( &mut self, var: &str, value: Shared<'gc, Value<'gc, C, S>>, )

Defines or redefines a value in the symbol table to a new instance of Shared<Value>. If a variable named var already existed and was Shared::Aliased, its value is not modified.

Source

pub fn lookup<'a>( &'a self, var: &str, ) -> Option<&'a Shared<'gc, Value<'gc, C, S>>>

Looks up the given variable in the symbol table. If a variable with the given name does not exist, returns None.

Source

pub fn lookup_mut<'a>( &'a mut self, var: &str, ) -> Option<&'a mut Shared<'gc, Value<'gc, C, S>>>

Equivalent to SymbolTable::lookup except that it returns a mutable reference.

Source

pub fn len(&self) -> usize

Gets the number of symbols currently stored in the symbol table.

Source

pub fn is_empty(&self) -> bool

Checks if the symbol table is currently empty (no defined symbols).

Source

pub fn iter(&self) -> Iter<'_, CompactString, Shared<'gc, Value<'gc, C, S>>>

Iterates over the key value pairs stored in the symbol table.

Source

pub fn iter_mut( &mut self, ) -> IterMut<'_, CompactString, Shared<'gc, Value<'gc, C, S>>>

Iterates over the key value pairs stored in the symbol table.

Trait Implementations§

Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Clone for SymbolTable<'gc, C, S>

Source§

fn clone(&self) -> Self

Creates a shallow (non-aliasing) copy of all variables currently stored in this symbol table.

1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for SymbolTable<'gc, C, S>

Source§

fn needs_trace() -> bool

As an optimization, if this type can never hold a Gc pointer and trace is unnecessary to call, you may implement this method and return false. The default implementation returns true, signaling that Collect::trace must be called.
Source§

fn trace(&self, cc: &Collection)

Must call Collect::trace on all held Gc pointers. If this type holds inner types that implement Collect, a valid implementation would simply call Collect::trace on all the held values to ensure this.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Debug for SymbolTable<'gc, C, S>
where VecMap<CompactString, Shared<'gc, Value<'gc, C, S>>, true>: Debug,

Source§

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

Formats the value using the given formatter. Read more
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Default for SymbolTable<'gc, C, S>
where VecMap<CompactString, Shared<'gc, Value<'gc, C, S>>, true>: Default,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<'gc, C, S> Freeze for SymbolTable<'gc, C, S>

§

impl<'gc, C, S> !RefUnwindSafe for SymbolTable<'gc, C, S>

§

impl<'gc, C, S> !Send for SymbolTable<'gc, C, S>

§

impl<'gc, C, S> !Sync for SymbolTable<'gc, C, S>

§

impl<'gc, C, S> Unpin for SymbolTable<'gc, C, S>

§

impl<'gc, C, S> !UnwindSafe for SymbolTable<'gc, C, S>

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,