basic_guard/
basic_guard.rs1use fsm_guards::{evaluate, EvalCtx, GuardError};
6use serde_json::json;
7
8fn main() {
9 let ctx = EvalCtx::new();
10
11 let approved = evaluate(
13 &json!({"==": [{"var": "status"}, "approved"]}),
14 &json!({"status": "approved"}),
15 &ctx,
16 )
17 .unwrap();
18 println!("approved: {approved}"); let ready = evaluate(
22 &json!({"and": [
23 {"==": [{"var": "status"}, "active"]},
24 {">=": [{"var": "score"}, 80]},
25 {"in": [{"var": "role"}, ["admin", "operator"]]}
26 ]}),
27 &json!({"status": "active", "score": 95, "role": "admin"}),
28 &ctx,
29 )
30 .unwrap();
31 println!("ready: {ready}"); match evaluate(
35 &json!({"var": "nonexistent"}),
36 &json!({"status": "active"}),
37 &ctx,
38 ) {
39 Err(GuardError::MissingVar(path)) => println!("missing var: {path}"),
40 other => println!("unexpected: {other:?}"),
41 }
42}