pub struct Term {
pub type: Option<i32>,
pub datum: Option<Datum>,
pub args: Vec<Term>,
pub optargs: Vec<AssocPair>,
}
Expand description
A [Term] is either a piece of data (see Datum above), or an operator and its operands. If you have a [Datum], it’s stored in the member [datum]. If you have an operator, its positional arguments are stored in [args] and its optional arguments are stored in [optargs].
A note about type signatures:
We use the following notation to denote types:
arg1_type, arg2_type, argrest_type… -> result_type
So, for example, if we have a function avg
that takes any number of
arguments and averages them, we might write:
NUMBER… -> NUMBER
Or if we had a function that took one number modulo another:
NUMBER, NUMBER -> NUMBER
Or a function that takes a table and a primary key of any Datum type, then
retrieves the entry with that primary key:
Table, DATUM -> OBJECT
Some arguments must be provided as literal values (and not the results of sub
terms). These are marked with a !
.
Optional arguments are specified within curly braces as argname :
value
type (e.x {noreply:BOOL}
)
Many RQL operations are polymorphic. For these, alterantive type signatures
are separated by |
.
The RQL type hierarchy is as follows: Top DATUM NULL BOOL NUMBER STRING OBJECT SingleSelection ARRAY Sequence ARRAY Stream StreamSelection Table Database Function Ordering - used only by ORDER_BY Pathspec – an object, string, or array that specifies a path Error
Fields§
§type: Option<i32>
§datum: Option<Datum>
This is only used when type is DATUM.
args: Vec<Term>
Holds the positional arguments of the query.
optargs: Vec<AssocPair>
Holds the optional arguments of the query.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Term
impl<'de> Deserialize<'de> for Term
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Message for Term
impl Message for Term
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode<B>(buf: B) -> Result<Self, DecodeError>
fn decode<B>(buf: B) -> Result<Self, DecodeError>
Source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
Source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
self
. Read moreSource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
self
.