use reval::prelude::*;
use rust_decimal::Decimal;
use serde::Serialize;
#[tokio::main]
async fn main() {
#[derive(Serialize)]
struct Data {
amount: Decimal,
}
let rule = r#"
{
"name": "pass decimal",
"expr": { "gt": [
{"cdecimal": {"ref": "amount"}},
{"decimal": 900}
]}
}"#;
let ruleset = ruleset()
.with_rule(Rule::parse_json(rule).unwrap())
.unwrap()
.build();
let facts = Data {
amount: Decimal::new(1000, 0),
};
for outcome in ruleset.evaluate(&facts).await.unwrap() {
assert_eq!(outcome.value.unwrap(), Value::String("11".to_string()));
}
}