pub struct QueryResult {
pub expressions: Vec<Expression>,
pub bindings: Value,
}
Expand description
Result of evaluating a Rego query.
A query containing single expression.
// Create engine and evaluate "1 + 2".
let results = Engine::new().eval_query("1 + 2".to_string(), false)?;
// Fetch the first (sole) result.
let result = &results.result[0];
assert_eq!(result.expressions[0].value, Value::from(3u64));
assert_eq!(result.expressions[0].text.as_ref(), "1 + 2");
A query containing multiple expressions.
// Create engine and evaluate "1 + 2; 3.5 * 4".
let results = Engine::new().eval_query("1 + 2; 3.55 * 4".to_string(), false)?;
// Fetch the first (sole) result.
let result = &results.result[0];
// First expression.
assert_eq!(result.expressions[0].value, Value::from(3u64));
assert_eq!(result.expressions[0].text.as_ref(), "1 + 2");
// Second expression.
assert_eq!(result.expressions[1].value, Value::from(14.2));
assert_eq!(result.expressions[1].text.as_ref(), "3.55 * 4");
Expressions that create bindings (i.e. associate names to values) evaluate to
either true or false. The value of bindings are available in the bindings
field.
// Create engine and evaluate "x = 1; y = x > 0".
let results = Engine::new().eval_query("x = 1; y = x > 0".to_string(), false)?;
// Fetch the first (sole) result.
let result = &results.result[0];
// First expression is true.
assert_eq!(result.expressions[0].value, Value::from(true));
assert_eq!(result.expressions[0].text.as_ref(), "x = 1");
// Second expression is true.
assert_eq!(result.expressions[1].value, Value::from(true));
assert_eq!(result.expressions[1].text.as_ref(), "y = x > 0");
// bindings contains the value for each named expession.
assert_eq!(result.bindings[&Value::from("x")], Value::from(1u64));
assert_eq!(result.bindings[&Value::from("y")], Value::from(true));
If any expression evaluates to false, then no results are produced.
// Create engine and evaluate "true; true; false".
let results = Engine::new().eval_query("true; true; false".to_string(), false)?;
assert!(results.result.is_empty());
Fields§
§expressions: Vec<Expression>
Expressions in the query.
Each statement in the query is treated as a separte expression.
bindings: Value
Bindings created in the query.
Trait Implementations§
Source§impl Clone for QueryResult
impl Clone for QueryResult
Source§fn clone(&self) -> QueryResult
fn clone(&self) -> QueryResult
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for QueryResult
impl Debug for QueryResult
Source§impl Default for QueryResult
impl Default for QueryResult
Source§impl PartialEq for QueryResult
impl PartialEq for QueryResult
Source§impl Serialize for QueryResult
impl Serialize for QueryResult
impl Eq for QueryResult
impl StructuralPartialEq for QueryResult
Auto Trait Implementations§
impl Freeze for QueryResult
impl RefUnwindSafe for QueryResult
impl Send for QueryResult
impl Sync for QueryResult
impl Unpin for QueryResult
impl UnwindSafe for QueryResult
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