datalogic-rs

Crates.iodatalogic-rs
lib.rsdatalogic-rs
version4.0.9
created_at2024-11-19 02:20:35.614503+00
updated_at2026-01-24 05:44:00.272908+00
descriptionA fast, type-safe Rust implementation of JSONLogic for evaluating logical rules as JSON. Perfect for business rules engines and dynamic filtering in Rust applications.
homepagehttps://github.com/GoPlasmatic/datalogic-rs
repositoryhttps://github.com/GoPlasmatic/datalogic-rs
max_upload_size
id1452835
size699,079
Plasmatic Engineering (shankar-gpio)

documentation

README

Plasmatic Logo

datalogic-rs

A fast, production-ready Rust engine for JSONLogic.

License: Apache 2.0 Rust Crates.io Documentation npm


Quick Example

use datalogic_rs::DataLogic;
use serde_json::json;

let engine = DataLogic::new();
let logic = json!({ ">": [{ "var": "age" }, 18] });
let compiled = engine.compile(&logic).unwrap();

let result = engine.evaluate_owned(&compiled, json!({ "age": 21 })).unwrap();
assert_eq!(result, json!(true));

Packages

Package Description Install
datalogic-rs Rust library cargo add datalogic-rs
@goplasmatic/datalogic WASM/JavaScript npm i @goplasmatic/datalogic
@goplasmatic/datalogic-ui React visual debugger npm i @goplasmatic/datalogic-ui

Resources

Online Debugger

JSONLogic Online Debugger Demo

Try the JSONLogic Online Debugger to interactively test your rules

Key Features

  • Thread-Safe - Compile once, evaluate anywhere with zero-copy Arc sharing
  • Fully Compliant - Passes the official JSONLogic test suite
  • 50+ Operators - Including datetime, regex, and extended string/array operations
  • Extensible - Add custom operators with a simple trait
  • Templating Mode - Preserve object structures for dynamic JSON generation
  • Multi-Platform - Rust, WASM (browser/Node.js), with visual React debugger

JavaScript / TypeScript

import init, { evaluate } from '@goplasmatic/datalogic';

await init();

const result = evaluate(
  '{">=": [{"var": "age"}, 18]}',
  '{"age": 21}',
  false
);
console.log(JSON.parse(result)); // true

React Visual Debugger

import { DataLogicEditor } from '@goplasmatic/datalogic-ui';

<DataLogicEditor
  value={{ "and": [{ ">": [{ "var": "age" }, 18] }, { "var": "active" }] }}
  data={{ age: 25, active: true }}
  mode="debug"
/>

About Plasmatic

Created by Plasmatic, building open-source tools for financial infrastructure and data processing.

License

Licensed under Apache 2.0. See LICENSE for details.

Commit count: 371

cargo fmt