pub trait SymbolMap<K> {
    type Value;

    fn insert(&mut self, key: K, value: Self::Value);
    fn get<Q>(&self, key: &Q) -> Option<&Self::Value>
    where
        Q: Hash + Eq + ?Sized,
        K: Borrow<Q>
; fn is_empty(&self) -> bool; fn try_get_mut<Q>(&mut self, key: &Q) -> Option<&mut Self::Value>
    where
        Q: Hash + Eq + ?Sized,
        K: Borrow<Q>
; fn push(&mut self); fn pop(&mut self); fn depth(&self) -> usize; fn contains_key<Q>(&self, key: &Q) -> bool
    where
        Q: Hash + Eq + ?Sized,
        K: Borrow<Q>
, { ... } }
Expand description

A trait for a symbol table which can be indexed by a given key.

Behaves like a stack of HashMaps.

Required Associated Types

The value stored in this symbol table

Required Methods

Insert a key/value pair into this symbol table at the current level

Get the most recent definition of a key in this symbol table

Whether this symbol table is empty

Try to get a mutable reference to the definition of a key in the top level of this symbol table

May fail for arbitrary reasons, to avoid, e.g., re-inserting the key at the top level as mutable.

Push a level onto this symbol table

Pop a level from this symbol table

Note that this is not guaranteed to drop all elements stored in the level!

Get the current depth of this symbol table

Provided Methods

Whether this symbol table contains this key

Implementors