pub trait Language: Send + Sync {
// Required methods
fn name(&self) -> &'static str;
fn create_expression(
&self,
script: &str,
) -> Result<Box<dyn Expression>, LanguageError>;
fn create_predicate(
&self,
script: &str,
) -> Result<Box<dyn Predicate>, LanguageError>;
// Provided methods
fn create_predicate_group(
&self,
scripts: &[&str],
) -> Result<Option<Box<dyn PredicateGroup>>, LanguageError> { ... }
fn create_mutating_expression(
&self,
_script: &str,
) -> Result<Box<dyn MutatingExpression>, LanguageError> { ... }
fn create_mutating_predicate(
&self,
_script: &str,
) -> Result<Box<dyn MutatingPredicate>, LanguageError> { ... }
}Expand description
A Language factory: produces Expression and Predicate objects.
Required Methods§
fn name(&self) -> &'static str
fn create_expression( &self, script: &str, ) -> Result<Box<dyn Expression>, LanguageError>
fn create_predicate( &self, script: &str, ) -> Result<Box<dyn Predicate>, LanguageError>
Provided Methods§
Sourcefn create_predicate_group(
&self,
scripts: &[&str],
) -> Result<Option<Box<dyn PredicateGroup>>, LanguageError>
fn create_predicate_group( &self, scripts: &[&str], ) -> Result<Option<Box<dyn PredicateGroup>>, LanguageError>
Create a group of predicates that can be evaluated in one engine call.
The default returns Ok(None), meaning group evaluation is not
supported by this language; callers fall back to per-clause sequential
evaluation.
Sourcefn create_mutating_expression(
&self,
_script: &str,
) -> Result<Box<dyn MutatingExpression>, LanguageError>
fn create_mutating_expression( &self, _script: &str, ) -> Result<Box<dyn MutatingExpression>, LanguageError>
Create a mutating expression. Default returns NotSupported.
Sourcefn create_mutating_predicate(
&self,
_script: &str,
) -> Result<Box<dyn MutatingPredicate>, LanguageError>
fn create_mutating_predicate( &self, _script: &str, ) -> Result<Box<dyn MutatingPredicate>, LanguageError>
Create a mutating predicate. Default returns NotSupported.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".