9个版本
0.2.2 | 2022年8月25日 |
---|---|
0.2.1 | 2022年4月26日 |
0.1.7 | 2020年10月16日 |
0.1.6 | 2020年8月17日 |
#710 in 编码
1,466 每月下载量
175KB
5K SLoC
使用Rust编写的JEXL评估器 此crate依赖于一个JEXL解析crate,该crate处理所有解析并是同一工作空间的一部分。JEXL是Mozilla使用的一种表达式语言,更多信息请见:https://github.com/mozilla/mozjexl
如何使用
此crate的访问点是Evaluator Struct的eval
函数 您可以直接使用eval
函数来评估独立语句
例如
use jexl_eval::Evaluator;
use serde_json::json as value;
let evaluator = Evaluator::new();
assert_eq!(evaluator.eval("'Hello ' + 'World'").unwrap(), value!("Hello World"));
您还可以使用eval_in_context
函数在上下文中运行语句 上下文可以是任何实现了serde::Serializable
trait的类型,如果语句与上下文不匹配,函数将返回错误
例如
use jexl_eval::Evaluator;
use serde_json::json as value;
let context = value!({"a": {"b": 2.0}});
let evaluator = Evaluator::new();
assert_eq!(evaluator.eval_in_context("a.b", context).unwrap(), value!(2.0));
依赖
~3–4.5MB
~88K SLoC