You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Common Expression Language (CEL) is a non-Turing complete language designed
for simplicity, speed, safety, and
portability. CEL's C-like syntax looks nearly identical to equivalent expressions in C++, Go, Java, and TypeScript. CEL
is ideal for lightweight expression evaluation when a fully sandboxed scripting language is too resource intensive.
// Check whether a resource name starts with a group name.resource.name.startsWith("/groups/" + auth.claims.group)
// Determine whether the request is in the permitted time window.request.time-resource.age<duration("24h")
// Check whether all resource names in a list match a given filter.auth.claims.email_verified&&resources.all(r,r.startsWith(auth.claims.email))
Getting Started
Add cel to your Cargo.toml:
[dependencies]
cel = "0.11.6"
Create and execute a simple CEL expression:
use cel::{Context,Program};fnmain(){let program = Program::compile("add(2, 3) == 5").unwrap();letmut context = Context::default();
context.add_function("add", |a:i64,b:i64| a + b);let value = program.execute(&context).unwrap();assert_eq!(value,true.into());}
Examples
Check out these other examples to learn how to use this library:
Simple - A simple example of how to use the library.
Variables - Passing variables and using them in your program.
Functions - Defining and using custom functions in your program.