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 编码

Download history • Rust 包仓库 334/week @ 2024-03-24 • Rust 包仓库 550/week @ 2024-03-31 • Rust 包仓库 232/week @ 2024-04-07 • Rust 包仓库 215/week @ 2024-04-14 • Rust 包仓库 609/week @ 2024-04-21 • Rust 包仓库 320/week @ 2024-04-28 • Rust 包仓库 718/week @ 2024-05-05 • Rust 包仓库 701/week @ 2024-05-12 • Rust 包仓库 324/week @ 2024-05-19 • Rust 包仓库 349/week @ 2024-05-26 • Rust 包仓库 555/week @ 2024-06-02 • Rust 包仓库 448/week @ 2024-06-09 • Rust 包仓库 213/week @ 2024-06-16 • Rust 包仓库 436/week @ 2024-06-23 • Rust 包仓库 208/week @ 2024-06-30 • Rust 包仓库 601/week @ 2024-07-07 • Rust 包仓库

1,466 每月下载量

MPL-2.0 许可证

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