#math #expression #evaluation #math-expressions #parsing-tools

no-std evaluatorrs

数学表达式运行时评估工具

1 个不稳定发布版本

0.0.1 2023年9月14日

#9 in #解析工具

MIT/Apache

91KB
2K SLoC

此库提供了在运行时评估数学表达式的方法。

功能开关

  • std (默认): 启用使用 std 库
  • libm: 启用使用来自 libm 的数学函数,对于 no_std 软件包和非标准函数很有用

示例 1

use evaluatorrs::eval;
use evaluatorrs::formulas::ParserError;

fn evaluate() -> Result<(), ParserError> {
    let expression = "1 + 2";
    let result = eval(expression)?;
    debug_assert_eq!(result, 3.0);
    Ok(())
}

示例 2

use evaluatorrs::formulas::{Evaluate, RootFormula};
use evaluatorrs::function_stores::EmptyFunctionStore;
use evaluatorrs::variable_stores::{HashMapVariableStore, SetVariable};

fn example() -> Result<(), ParserError> {
    let formula = RootFormula::parse("a + b", &EmptyFunctionStore)?;
    let mut variable_store = HashMapVariableStore::new();
    variable_store.set("a", RootFormula::parse("1", &EmptyFunctionStore)?);
    variable_store.set("b", RootFormula::parse("10", &EmptyFunctionStore)?);
    let evaluated = formula.eval(&variable_store);
    assert!(evaluated.is_ok());
    let evaluated = evaluated?;
    assert_eq!(evaluated, 11.0);
 }

依赖项

~105KB