- Notifications
You must be signed in to change notification settings - Fork36
Common Expression Language interpreter written in Rust
License
cel-rust/cel-rust
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
TheCommon Expression Language (CEL) is a non-Turing complete language designedfor simplicity, speed, safety, andportability. CEL's C-like syntax looks nearly identical to equivalent expressions in C++, Go, Java, and TypeScript. CELis 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))
This project includes a CEL-parser and an interpreter which means that it can be used to evaluate CEL-expressions. Thelibrary aims to be very simple to use, while still being fast, safe, and customizable.
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());}
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.
- Concurrent Execution - Executing the same program concurrently.
About
Common Expression Language interpreter written in Rust
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.