rvs 0.5.0

A library for defining and evaluating random variables using a simple DSL
Documentation
use super::enumeration::Enum;

use std::collections::HashMap;

pub enum Symbol {
    Variable(usize),
    Enum(Enum),
    EnumMember(u32),
}

pub struct Symbols {
    symbols: HashMap<String, Symbol>,
}

impl Symbols {
    pub fn new() -> Symbols {
        Symbols {
            symbols: HashMap::new(),
        }
    }

    pub fn insert_enum(&mut self, name: &str, enumeration: Enum) {
        self.symbols.insert(name.into(), Symbol::Enum(enumeration));
    }

    pub fn insert_enum_member<S>(&mut self, name: S, value: u32)
    where
        S: Into<String>,
    {
        self.symbols.insert(name.into(), Symbol::EnumMember(value));
    }

    pub fn insert_variable(&mut self, name: &str, index: usize) {
        self.symbols.insert(name.into(), Symbol::Variable(index));
    }

    pub fn contains(&self, name: &str) -> bool {
        self.symbols.contains_key(name)
    }

    pub fn get(&self, name: &str) -> Option<&Symbol> {
        self.symbols.get(name)
    }
}