use fasteval3::Evaler;
use std::collections::BTreeMap; fn main() -> Result<(), fasteval3::Error> {
let parser = fasteval3::Parser::new();
let mut slab = fasteval3::Slab::new();
let expr_ref = parser.parse("x + 1", &mut slab.ps)?.from(&slab.ps);
let mut map: BTreeMap<String, f64> = BTreeMap::new();
map.insert(String::from("x"), 1.0);
let val = expr_ref.eval(&slab, &mut map)?;
assert!((val - 2.0).abs() < f64::EPSILON);
map.insert(String::from("x"), 2.5);
let val = expr_ref.eval(&slab, &mut map)?;
assert!((val - 3.5).abs() < f64::EPSILON);
let expr_ref = parser.parse("x * 10", &mut slab.ps)?.from(&slab.ps);
let val = expr_ref.eval(&slab, &mut map)?;
assert!((val - 25.0).abs() < f64::EPSILON);
Ok(())
}