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 HashMap
s.
Required Associated Types
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
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.
Pop a level from this symbol table
Note that this is not guaranteed to drop all elements stored in the level!