basic/
basic.rs

1//! Basic example demonstrating core cel-cxx functionality
2
3use cel_cxx::*;
4
5type Result<T, E = Error> = std::result::Result<T, E>;
6
7fn main() -> Result<(), Error> {
8    println!("šŸš€ CEL-CXX Basic Example\n");
9
10    // Create an environment with variables and functions
11    let env = Env::builder()
12        .declare_variable::<String>("name")?
13        .declare_variable::<i64>("age")?
14        .register_global_function("greet", |name: &str| format!("Hello, {}!", name))?
15        .register_global_function("is_adult", |age: i64| age >= 18)?
16        .build()?;
17
18    // Compile and evaluate expressions
19    let expressions = vec![
20        "greet(name)",
21        "is_adult(age)",
22        "'Name: ' + name + ', Age: ' + string(age)",
23        "age >= 18 ? 'adult' : 'minor'",
24    ];
25
26    let activation = Activation::new()
27        .bind_variable("name", "Alice")?
28        .bind_variable("age", 25i64)?;
29
30    for expr in expressions {
31        let program = env.compile(expr)?;
32        let result = program.evaluate(&activation)?;
33        println!("{} = {}", expr, result);
34    }
35
36    println!("\nāœ… Basic example completed!");
37    Ok(())
38}