datalogic-rs
A high-performance Rust implementation of JSONLogic that provides a way to write portable logic rules as JSON. Fully compliant with the JSONLogic specification and optimized for production use.
Overview
datalogic-rs offers a complete, thread-safe implementation of the JSONLogic specification with:
- ๐ฏ 100% compliance with official JSONLogic test suite
- ๐ก๏ธ Strong type safety and comprehensive error handling
- ๐ฆ Minimal dependencies (only serde_json, thiserror, smallvec)
- ๐ Zero-copy deserialization and optimized rule evaluation
- ๐งต Thread-safe design with static operators
- ๐ Smart rule optimization and caching
Installation
Add to your Cargo.toml:
[]
= "2.0.15"
Quick Example
use ;
use json;
Features
Core Operations
- Comparison:
==,===,!=,!==,>,>=,<,<= - Logic:
!,!!,or,and,if,?: - Numeric:
+,-,*,/,%,min,max - Array:
map,filter,reduce,all,none,some,merge - String:
substr,cat,in - Data:
var,missing,missing_some
Advanced Features
- Static Optimization: Rules are optimized during compilation
- Error Recovery:
tryoperator for handling evaluation errors - Data Preservation:
preserveoperator for maintaining data structure - Zero-Copy Design: Efficient memory usage with minimal allocation
- Type Coercion: Consistent type handling following JSONLogic spec
Performance
The library is heavily optimized for production use with:
- Static operator dispatch
- Zero-copy JSON deserialization
- Smart rule optimization
- Efficient memory management with SmallVec
- Comprehensive benchmarking suite
Testing
100% compatibility with official JSONLogic tests:
License
Licensed under Apache-2.0
Contributing
Contributions are welcome! The codebase has extensive documentation and test coverage.