Skip to main content

camel_language_api/
lib.rs

1pub mod error;
2
3use camel_api::Value;
4use camel_api::exchange::Exchange;
5pub use error::LanguageError;
6
7/// A Language factory: produces Expression and Predicate objects.
8pub trait Language: Send + Sync {
9    fn name(&self) -> &'static str;
10    fn create_expression(&self, script: &str) -> Result<Box<dyn Expression>, LanguageError>;
11    fn create_predicate(&self, script: &str) -> Result<Box<dyn Predicate>, LanguageError>;
12}
13
14/// Evaluates to a Value against an Exchange.
15pub trait Expression: Send + Sync {
16    fn evaluate(&self, exchange: &Exchange) -> Result<Value, LanguageError>;
17}
18
19/// Evaluates to bool against an Exchange.
20pub trait Predicate: Send + Sync {
21    fn matches(&self, exchange: &Exchange) -> Result<bool, LanguageError>;
22}