use std::collections::BTreeMap;
fn main() -> Result<(), fasteval3::Error> {
let mut layer1 = BTreeMap::new();
layer1.insert(String::from("x"), 2.0);
layer1.insert(String::from("y"), 3.0);
let mut layered_namespace: Vec<BTreeMap<String, f64>> = vec![layer1];
let val = fasteval3::ez_eval("x * y", &mut layered_namespace)?;
assert!((val - 6.0).abs() < f64::EPSILON);
let mut layer2 = BTreeMap::new();
layer2.insert(String::from("x"), 3.0);
layered_namespace.push(layer2);
let val = fasteval3::ez_eval("x * y", &mut layered_namespace)?;
assert!((val - 9.0).abs() < f64::EPSILON);
layered_namespace.pop();
let val = fasteval3::ez_eval("x * y", &mut layered_namespace)?;
assert!((val - 6.0).abs() < f64::EPSILON);
Ok(())
}