exmex 0.21.0

fast, simple, and extendable mathematical expression evaluator able to compute partial derivatives
Documentation
#[cfg(feature = "value")]
use exmex::{statements, Statement, StatementsVal};
#[cfg(feature = "value")]
use std::io::{self, Write};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    #[cfg(feature = "value")]
    {
        let mut buffer = String::new();
        let mut stdout = io::stdout();
        let stdin = io::stdin();
        let mut statements = StatementsVal::<i32, f64>::default();
        loop {
            stdout.write_all("> ".as_bytes())?;
            stdout.flush()?;
            stdin.read_line(&mut buffer)?;
            let Statement { var, rhs } = statements::line_2_statement(buffer.trim())?;
            if let Some(var) = var {
                statements = statements.insert(var, rhs);
            } else {
                match rhs.eval(&statements) {
                    Ok(x) => println!("{x:?}"),
                    Err(e) => eprintln!("Error {e:?}"),
                }
            }

            buffer.clear();
        }
    }
    #[cfg(not(feature = "value"))]
    Ok(())
}