use datalogic_rs::Engine;
fn main() {
let engine = Engine::new();
let run = engine.trace().eval_str(
r#"{"if": [{">": [{"var": "age"}, 18]}, "adult", "minor"]}"#,
r#"{"age": 21}"#,
);
println!("[1] result: {}", run.result.as_ref().unwrap());
println!(" steps: {}", run.steps.len());
for step in &run.steps {
let r = step
.result
.as_ref()
.map(|v| v.to_string())
.unwrap_or_else(|| "<error>".into());
println!(" #{} node {} -> {}", step.step_id, step.node_id, r);
}
let run = engine
.trace()
.eval_str(r#"{"+": [{"var": "x"}, "not-a-number"]}"#, r#"{"x": 1}"#);
let err = run.result.unwrap_err();
println!("\n[2] failure");
println!(" tag: {}", err.tag());
println!(" operator: {:?}", err.operator());
println!(" steps: {} recorded before failure", run.steps.len());
}