1use cel_core::{CelType, Env, MapActivation, Value};
6
7fn main() {
8 let env = Env::with_standard_library()
9 .with_variable("user", CelType::map(CelType::String, CelType::Dyn));
10
11 let user = Value::map([
13 ("name", Value::from("Alice")),
14 ("age", Value::from(30)), ("active", Value::from(true)),
16 ]);
17
18 let mut activation = MapActivation::new();
19 activation.insert("user", user);
20
21 let ast = env.compile("user.name").unwrap();
23 let program = env.program(&ast).unwrap();
24 let result = program.eval(&activation);
25 println!("user.name: {}", result);
26
27 let ast = env.compile(r#"user["age"]"#).unwrap();
29 let program = env.program(&ast).unwrap();
30 let result = program.eval(&activation);
31 println!(r#"user["age"]: {}"#, result);
32
33 let ast = env.compile(r#""name" in user"#).unwrap();
35 let program = env.program(&ast).unwrap();
36 let result = program.eval(&activation);
37 println!(r#""name" in user: {}"#, result);
38
39 let ast = env.compile("has(user.email)").unwrap();
41 let program = env.program(&ast).unwrap();
42 let result = program.eval(&activation);
43 println!("has(user.email): {}", result);
44
45 let ast = env.compile(r#"user.active && user.age >= 21"#).unwrap();
47 let program = env.program(&ast).unwrap();
48 let result = program.eval(&activation);
49 println!("active && age >= 21: {}", result);
50}