pub struct Evaluator { /* private fields */ }Expand description
Stable evaluator facade.
Full JSONata evaluation parity is not finished yet. evaluate currently returns
an explicit not-implemented error and is kept as stable API surface for upcoming releases.
§Examples
let evaluator = async_jsonata_rust::Evaluator::with_builtins();
let expression = evaluator.parse("1")?;
let result = evaluator.evaluate(&expression, &async_jsonata_rust::JsonValue::Null);
assert!(result.is_err());Implementations§
Source§impl Evaluator
impl Evaluator
Sourcepub fn new(functions: FunctionRegistry) -> Self
pub fn new(functions: FunctionRegistry) -> Self
Creates evaluator with empty registry.
§Examples
let evaluator = async_jsonata_rust::Evaluator::new(async_jsonata_rust::FunctionRegistry::new());
assert!(evaluator.function_registry().is_empty());Sourcepub fn with_builtins() -> Self
pub fn with_builtins() -> Self
Creates evaluator with built-in registry.
§Examples
let evaluator = async_jsonata_rust::Evaluator::with_builtins();
assert!(evaluator.function_registry().contains("sqrt"));Sourcepub fn parse(&self, source: impl Into<String>) -> Result<Expression, Error>
pub fn parse(&self, source: impl Into<String>) -> Result<Expression, Error>
Parses expression using stable parser API.
§Examples
let evaluator = async_jsonata_rust::Evaluator::with_builtins();
let expression = evaluator.parse("foo.bar")?;
assert_eq!(expression.ast()["type"], "path");Sourcepub fn evaluate(
&self,
expression: &Expression,
_input: &JsonValue,
) -> Result<JsonValue, Error>
pub fn evaluate( &self, expression: &Expression, _input: &JsonValue, ) -> Result<JsonValue, Error>
Evaluates parsed expression against input JSON.
§Examples
let evaluator = async_jsonata_rust::Evaluator::with_builtins();
let expression = evaluator.parse("1")?;
let out = evaluator.evaluate(&expression, &async_jsonata_rust::JsonValue::Null);
assert!(out.is_err());Sourcepub fn function_registry(&self) -> &FunctionRegistry
pub fn function_registry(&self) -> &FunctionRegistry
Returns evaluator function registry.
§Examples
let evaluator = async_jsonata_rust::Evaluator::with_builtins();
assert!(evaluator.function_registry().contains("abs"));Trait Implementations§
Auto Trait Implementations§
impl Freeze for Evaluator
impl !RefUnwindSafe for Evaluator
impl Send for Evaluator
impl Sync for Evaluator
impl Unpin for Evaluator
impl !UnwindSafe for Evaluator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more