42 个版本 (23 个重大更新)

0.26.0 2024 年 8 月 8 日
0.24.3 2024 年 8 月 1 日
0.24.2 2024 年 7 月 17 日
0.19.0 2024 年 3 月 25 日
0.8.0 2023 年 7 月 28 日

#95 in 日期和时间

Download history 594/week @ 2024-05-02 483/week @ 2024-05-09 563/week @ 2024-05-16 436/week @ 2024-05-23 298/week @ 2024-05-30 403/week @ 2024-06-06 533/week @ 2024-06-13 380/week @ 2024-06-20 194/week @ 2024-06-27 425/week @ 2024-07-04 663/week @ 2024-07-11 262/week @ 2024-07-18 336/week @ 2024-07-25 444/week @ 2024-08-01 266/week @ 2024-08-08 161/week @ 2024-08-15

每月 1,258 次下载
用于 2 crates

MIT 许可证

205KB
5K SLoC

一种轻量级表达式语言,专为在各种环境中评估表达式而设计。

禅表达式是一种灵活的单线程表达式语言,专为简洁和高效而设计。它主要用于评估和处理 JSON 数据,提供了关键组件,使开发者能够轻松创建响应式和非阻塞 I/O 应用程序。开箱即用,它提供了惊人的优势

  • 🚀 非常快 - 每秒执行数百万次评估
  • 🧠 直观的语法 - 最小化且表达性强的语法
  • 💼 可移植 - 可编译为包括 WASM 在内的所有标准架构

有关语言参考的完整列表,请访问 文档

示例

使用隔离区评估表达式

use zen_expression::{evaluate_expression, json};

fn main() {
    let context = json!({ "tax": { "percentage": 10 } });
    let tax_amount = evaluate_expression("50 * tax.percentage / 100", &context).unwrap();

    assert_eq!(tax_amount, json!(5));
}

高性能

在同时评估大量表达式时,您可以直接使用隔离区。在底层,隔离区将重复使用先前评估中分配的内存,从而显著提高性能。

use zen_expression::{Isolate, json};

fn main() {
    let context = json!({ "tax": { "percentage": 10 } });
    let mut isolate = Isolate::with_environment(&context);

    // Fast 🚀
    for _ in 0..1_000 {
        let tax_amount = isolate.run_standard("50 * tax.percentage / 100").unwrap();
        assert_eq!(tax_amount, json!(5));
    }
}

功能标志

名称 描述 默认?
regex-deprecated 使用标准 regex crate
regex-lite 使用轻量级 regex-lite crate 的选项。对于减少构建大小特别有用,尤其是在 WASM 中。

依赖项

~3–5MB
~88K SLoC