pub struct SymbolTable<'gc, C: CustomTypes<S>, S: System<C>>(_);
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 define_if_undefined<F: FnOnce() -> Shared<'gc, Value<'gc, C, S>>>( &mut self, var: &str, f: F )

Defines a variable with an initial value if it does not already exist in this symbol table. If a variable with the given name already exists, this is a no-op.

source

pub fn lookup(&self, var: &str) -> Option<&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( &mut self, var: &str ) -> Option<&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<'gc, '_, C, S>

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

source

pub fn iter_mut(&mut self) -> IterMut<'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>> Default for SymbolTable<'gc, C, S>

source§

fn default() -> Self

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

impl<'gc, 'a, C: CustomTypes<S>, S: System<C>> IntoIterator for &'a SymbolTable<'gc, C, S>

§

type Item = <Iter<'gc, 'a, C, S> as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = Iter<'gc, 'a, C, S>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<'gc, 'a, C: CustomTypes<S>, S: System<C>> IntoIterator for &'a mut SymbolTable<'gc, C, S>

§

type Item = <IterMut<'gc, 'a, C, S> as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = IterMut<'gc, 'a, C, S>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

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

§

type Item = (String, Shared<'gc, Value<'gc, C, S>>)

The type of the elements being iterated over.
§

type IntoIter = IntoIter<'gc, C, S>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

Auto Trait Implementations§

§

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 Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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 Twhere V: MultiLane<T>,

§

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