Enum Expr
pub enum Expr {
Show 24 variants
And(ExprAnd),
Any(ExprAny),
Arg(ExprArg),
BinaryOp(ExprBinaryOp),
Cast(ExprCast),
Default,
Error(ExprError),
Exists(ExprExists),
Func(ExprFunc),
InList(ExprInList),
InSubquery(ExprInSubquery),
IsNull(ExprIsNull),
IsVariant(ExprIsVariant),
Let(ExprLet),
Map(ExprMap),
Match(ExprMatch),
Not(ExprNot),
Or(ExprOr),
Project(ExprProject),
Record(ExprRecord),
Reference(ExprReference),
List(ExprList),
Stmt(ExprStmt),
Value(Value),
}Expand description
An expression node in Toasty’s query AST.
Expr is the central type in the statement intermediate representation. Every
filter, projection, value, and computed result in a Toasty query is
represented as an Expr tree. The query engine compiles these trees through
several phases (simplify, lower, plan, execute) before they reach a database
driver.
§Examples
use toasty_core::stmt::{Expr, Value};
// Constant value expressions
let t = Expr::TRUE;
assert!(t.is_true());
let n = Expr::null();
assert!(n.is_value_null());
// From conversions
let i: Expr = 42i64.into();
assert!(i.is_value());Variants§
And(ExprAnd)
Logical AND of multiple expressions. See ExprAnd.
Any(ExprAny)
Returns true if any item in a collection is truthy. See ExprAny.
Arg(ExprArg)
Positional argument placeholder. See ExprArg.
BinaryOp(ExprBinaryOp)
Binary comparison or arithmetic operation. See ExprBinaryOp.
Cast(ExprCast)
Type cast. See ExprCast.
Default
Instructs the database to use its default value for a column. Useful for auto-increment fields and other columns with server-side defaults.
Error(ExprError)
An error expression that fails evaluation with a message. See ExprError.
Exists(ExprExists)
[NOT] EXISTS(SELECT ...) check. See ExprExists.
Func(ExprFunc)
Aggregate or scalar function call. See ExprFunc.
InList(ExprInList)
expr IN (list) membership test. See ExprInList.
InSubquery(ExprInSubquery)
expr IN (SELECT ...) membership test. See ExprInSubquery.
IsNull(ExprIsNull)
IS [NOT] NULL check. Separate from binary operators because of
three-valued logic semantics in SQL. See ExprIsNull.
IsVariant(ExprIsVariant)
Tests whether a value is a specific enum variant. See ExprIsVariant.
Let(ExprLet)
Scoped binding expression (transient – inlined before planning).
See ExprLet.
Map(ExprMap)
Applies a transformation to each item in a collection. See ExprMap.
Match(ExprMatch)
Pattern-match dispatching on a subject. See ExprMatch.
Not(ExprNot)
Boolean negation. See ExprNot.
Or(ExprOr)
Logical OR of multiple expressions. See ExprOr.
Project(ExprProject)
Field projection from a composite value. See ExprProject.
Record(ExprRecord)
Fixed-size heterogeneous tuple of expressions. See ExprRecord.
Reference(ExprReference)
Reference to a field, column, or model in the current or an outer query
scope. See ExprReference.
List(ExprList)
Ordered, homogeneous collection of expressions. See ExprList.
Stmt(ExprStmt)
Embedded sub-statement (e.g., a subquery). See ExprStmt.
Value(Value)
Constant value. See Value.
Implementations§
§impl Expr
impl Expr
pub fn eval(&self, input: impl Input) -> Result<Value, Error>
pub fn eval(&self, input: impl Input) -> Result<Value, Error>
Evaluates this expression using the provided Input for argument
and reference resolution.
pub fn eval_bool(&self, input: impl Input) -> Result<bool, Error>
pub fn eval_bool(&self, input: impl Input) -> Result<bool, Error>
Evaluates this expression and returns the result as a bool.
§Errors
Returns an error if the expression does not evaluate to a boolean.
pub fn eval_const(&self) -> Result<Value, Error>
pub fn eval_const(&self) -> Result<Value, Error>
Evaluates this expression as a constant (no external input).
§impl Expr
impl Expr
pub const DEFAULT: Expr = Expr::Default
pub const DEFAULT: Expr = Expr::Default
Alias for Expr::Default as a constant.
pub fn is_value_null(&self) -> bool
pub fn is_value_null(&self) -> bool
Is a value that evaluates to null
pub fn is_unsatisfiable(&self) -> bool
pub fn is_unsatisfiable(&self) -> bool
Returns true if the expression can never evaluate to true.
In SQL’s three-valued logic, both false and null are unsatisfiable:
a filter producing either value will never match any rows.
pub fn is_default(&self) -> bool
pub fn is_default(&self) -> bool
Returns true if the expression is the default expression
pub fn is_binary_op(&self) -> bool
pub fn is_binary_op(&self) -> bool
Returns true if the expression is a binary operation
pub fn is_always_non_nullable(&self) -> bool
pub fn is_always_non_nullable(&self) -> bool
Returns true if the expression is always non-nullable.
This method is conservative and only returns true for expressions we can prove are non-nullable.
pub fn into_value(self) -> Value
pub fn into_value(self) -> Value
pub fn is_stable(&self) -> bool
pub fn is_stable(&self) -> bool
Returns true if the expression is stable
An expression is stable if it yields the same value each time it is evaluated
pub fn is_const(&self) -> bool
pub fn is_const(&self) -> bool
Returns true if the expression is a constant expression.
A constant expression is one that does not reference any external data.
This means it contains no Reference, Stmt, or Arg expressions that
reference external inputs.
Arg expressions inside Map bodies with nesting less than the current
map depth are local bindings (bound to the mapped element), not external
inputs, and are therefore considered const in that context.
pub fn is_eval(&self) -> bool
pub fn is_eval(&self) -> bool
Returns true if the expression can be evaluated.
An expression can be evaluated if it doesn’t contain references to external data sources like subqueries or references. Args are allowed since they represent function parameters that can be bound at evaluation time.
pub fn map_projections(&self, f: impl FnMut(&Projection) -> Projection) -> Expr
pub fn map_projections(&self, f: impl FnMut(&Projection) -> Projection) -> Expr
Returns a clone of this expression with all Projection nodes
transformed by f.
pub fn entry(&self, path: impl EntryPath) -> Option<Entry<'_>>
pub fn entry(&self, path: impl EntryPath) -> Option<Entry<'_>>
Navigates into a nested record or list expression by path and returns
a read-only Entry reference.
Returns None if the path cannot be followed (e.g., the expression is
not a record or list at the expected depth).
pub fn take(&mut self) -> Expr
pub fn take(&mut self) -> Expr
Takes the expression out, leaving Expr::Value(Value::Null) in its
place. Equivalent to std::mem::replace(self, Expr::null()).
pub fn substitute(&mut self, input: impl Input)
pub fn substitute(&mut self, input: impl Input)
Replaces every ExprArg in this expression tree with the
corresponding value from input.
§impl Expr
impl Expr
pub fn and(lhs: impl Into<Expr>, rhs: impl Into<Expr>) -> Expr
pub fn and(lhs: impl Into<Expr>, rhs: impl Into<Expr>) -> Expr
Creates an AND expression from two operands.
Flattens nested ANDs: and(and(a, b), c) produces and(a, b, c).
Short-circuits on true: and(true, x) returns x.
pub fn and_from_vec(operands: Vec<Expr>) -> Expr
pub fn and_from_vec(operands: Vec<Expr>) -> Expr
Creates an AND expression from a vector of operands.
Returns Expr::Value(true) for an empty vector and unwraps
single-element vectors into the element itself.
§impl Expr
impl Expr
pub fn binary_op(
lhs: impl Into<Expr>,
op: BinaryOp,
rhs: impl Into<Expr>,
) -> Expr
pub fn binary_op( lhs: impl Into<Expr>, op: BinaryOp, rhs: impl Into<Expr>, ) -> Expr
Creates a binary operation expression with the given operator.
pub fn is_eq(&self) -> bool
pub fn is_eq(&self) -> bool
Returns true if the expression is a binary expression with the equality operator
pub fn ge(lhs: impl Into<Expr>, rhs: impl Into<Expr>) -> Expr
pub fn ge(lhs: impl Into<Expr>, rhs: impl Into<Expr>) -> Expr
Creates a greater-than-or-equal (>=) expression.
§impl Expr
impl Expr
pub fn in_subquery(lhs: impl Into<Expr>, rhs: impl Into<Query>) -> Expr
pub fn in_subquery(lhs: impl Into<Expr>, rhs: impl Into<Query>) -> Expr
Creates an IN (subquery) expression: lhs IN (SELECT ...).
pub fn is_in_subquery(&self) -> bool
pub fn is_in_subquery(&self) -> bool
Returns true if this expression is an IN (subquery) check.
§impl Expr
impl Expr
pub fn is_variant(expr: impl Into<Expr>, variant: VariantId) -> Expr
pub fn is_variant(expr: impl Into<Expr>, variant: VariantId) -> Expr
Creates a variant check expression testing whether expr is the given
variant.
§impl Expr
impl Expr
pub fn list<T>(items: impl IntoIterator<Item = T>) -> Expr
pub fn list<T>(items: impl IntoIterator<Item = T>) -> Expr
Creates a list expression from an iterator of items convertible to Expr.
pub fn list_from_vec(items: Vec<Expr>) -> Expr
pub fn list_from_vec(items: Vec<Expr>) -> Expr
Creates a list expression from a pre-built vector of expressions.
pub fn is_list(&self) -> bool
pub fn is_list(&self) -> bool
Returns true if this expression is a list (either Expr::List or
Expr::Value(Value::List(...))).
pub fn is_list_empty(&self) -> bool
pub fn is_list_empty(&self) -> bool
Returns true if this expression is an empty list.
pub fn as_list_unwrap(&self) -> &ExprList
pub fn as_list_unwrap(&self) -> &ExprList
pub fn as_list_mut_unwrap(&mut self) -> &mut ExprList
pub fn as_list_mut_unwrap(&mut self) -> &mut ExprList
§impl Expr
impl Expr
§impl Expr
impl Expr
pub fn or(lhs: impl Into<Expr>, rhs: impl Into<Expr>) -> Expr
pub fn or(lhs: impl Into<Expr>, rhs: impl Into<Expr>) -> Expr
Creates an OR expression from two operands.
Flattens nested ORs: or(or(a, b), c) produces or(a, b, c).
pub fn or_from_vec(operands: Vec<Expr>) -> Expr
pub fn or_from_vec(operands: Vec<Expr>) -> Expr
Creates an OR expression from a vector of operands.
Returns Expr::Value(false) for an empty vector and unwraps
single-element vectors into the element itself.
§impl Expr
impl Expr
pub fn project(base: impl Into<Expr>, projection: impl Into<Projection>) -> Expr
pub fn project(base: impl Into<Expr>, projection: impl Into<Projection>) -> Expr
Creates a projection expression that extracts a field from base
using the given projection path.
pub fn arg_project(
expr_arg: impl Into<ExprArg>,
projection: impl Into<Projection>,
) -> Expr
pub fn arg_project( expr_arg: impl Into<ExprArg>, projection: impl Into<Projection>, ) -> Expr
Shorthand for Expr::project(Expr::arg(expr_arg), projection).
pub fn is_project(&self) -> bool
pub fn is_project(&self) -> bool
Returns true if this expression is a projection.
pub fn as_project(&self) -> Option<&ExprProject>
pub fn as_project(&self) -> Option<&ExprProject>
Returns a reference to the inner ExprProject if this is a
projection, or None otherwise.
pub fn as_project_unwrap(&self) -> &ExprProject
pub fn as_project_unwrap(&self) -> &ExprProject
§impl Expr
impl Expr
pub fn record<T>(items: impl IntoIterator<Item = T>) -> Expr
pub fn record<T>(items: impl IntoIterator<Item = T>) -> Expr
Creates a record expression from an iterator of items convertible to Expr.
pub fn record_from_vec(fields: Vec<Expr>) -> Expr
pub fn record_from_vec(fields: Vec<Expr>) -> Expr
Creates a record expression from a pre-built vector of field expressions.
pub fn as_record(&self) -> Option<&ExprRecord>
pub fn as_record(&self) -> Option<&ExprRecord>
Returns a reference to the inner ExprRecord if this is a record,
or None otherwise.
pub fn as_record_unwrap(&self) -> &ExprRecord
pub fn as_record_unwrap(&self) -> &ExprRecord
pub fn as_record_mut(&mut self) -> Option<&mut ExprRecord>
pub fn as_record_mut(&mut self) -> Option<&mut ExprRecord>
Returns a mutable reference to the inner ExprRecord if this is a
record, or None otherwise.
pub fn as_record_mut_unwrap(&mut self) -> &mut ExprRecord
pub fn as_record_mut_unwrap(&mut self) -> &mut ExprRecord
pub fn into_record(self) -> ExprRecord
pub fn into_record(self) -> ExprRecord
Consumes the expression and returns the inner ExprRecord.
§Panics
Panics if self is not Expr::Record.
pub fn record_len(&self) -> Option<usize>
pub fn record_len(&self) -> Option<usize>
Returns the number of fields if this expression is a record (either
Expr::Record or Expr::Value(Value::Record(...))), or None
otherwise.
pub fn into_record_items(self) -> Option<impl Iterator<Item = Expr>>
pub fn into_record_items(self) -> Option<impl Iterator<Item = Expr>>
Consumes the expression and returns an iterator over the record’s
fields if this is a record expression or value, or None otherwise.
§impl Expr
impl Expr
pub fn is_expr_reference(&self) -> bool
pub fn is_expr_reference(&self) -> bool
Returns true if this expression is a reference (field, column, or model).
pub fn ref_self_field(field: impl Into<FieldId>) -> Expr
pub fn ref_self_field(field: impl Into<FieldId>) -> Expr
Creates an expression that references a field in the current query.
This creates an ExprReference::Field with nesting = 0, meaning it
references a field in the current query scope rather than an outer query.
§Arguments
field- A field identifier that can be converted into aFieldId
§Returns
An Expr::Reference containing an ExprReference::Field that points to
the specified field in the current query’s relation.
pub fn ref_field(nesting: usize, field: impl Into<FieldId>) -> Expr
pub fn ref_field(nesting: usize, field: impl Into<FieldId>) -> Expr
Create a reference to a field at a specified nesting level
pub fn ref_parent_field(field: impl Into<FieldId>) -> Expr
pub fn ref_parent_field(field: impl Into<FieldId>) -> Expr
Create a reference to a field one level up
pub fn ref_parent_model() -> Expr
pub fn ref_parent_model() -> Expr
Creates a model reference to the parent (nesting level 1).
pub fn ref_ancestor_model(nesting: usize) -> Expr
pub fn ref_ancestor_model(nesting: usize) -> Expr
Create a model reference to the specified nesting level
pub fn column(column: impl Into<ExprReference>) -> Expr
pub fn column(column: impl Into<ExprReference>) -> Expr
Creates a column reference expression.
pub fn as_expr_reference(&self) -> Option<&ExprReference>
pub fn as_expr_reference(&self) -> Option<&ExprReference>
Returns a reference to the inner ExprReference if this is a
reference expression, or None otherwise.
pub fn as_expr_reference_unwrap(&self) -> &ExprReference
pub fn as_expr_reference_unwrap(&self) -> &ExprReference
pub fn as_expr_column(&self) -> Option<&ExprColumn>
pub fn as_expr_column(&self) -> Option<&ExprColumn>
Returns a reference to the inner ExprColumn if this is a column
reference, or None otherwise.
pub fn as_expr_column_unwrap(&self) -> &ExprColumn
pub fn as_expr_column_unwrap(&self) -> &ExprColumn
Returns a reference to the inner ExprColumn.
§Panics
Panics if self is not Expr::Reference(ExprReference::Column(_)).
§impl Expr
impl Expr
pub fn count_star() -> Expr
pub fn count_star() -> Expr
Creates a COUNT(*) expression.
§impl Expr
impl Expr
pub fn last_insert_id() -> Expr
pub fn last_insert_id() -> Expr
Creates a LAST_INSERT_ID() function expression.
Trait Implementations§
§impl From<&ExprColumn> for Expr
impl From<&ExprColumn> for Expr
§fn from(value: &ExprColumn) -> Expr
fn from(value: &ExprColumn) -> Expr
§impl From<&ExprReference> for Expr
impl From<&ExprReference> for Expr
§fn from(value: &ExprReference) -> Expr
fn from(value: &ExprReference) -> Expr
§impl From<ExprBinaryOp> for Expr
impl From<ExprBinaryOp> for Expr
§fn from(value: ExprBinaryOp) -> Expr
fn from(value: ExprBinaryOp) -> Expr
§impl From<ExprColumn> for Expr
impl From<ExprColumn> for Expr
§fn from(value: ExprColumn) -> Expr
fn from(value: ExprColumn) -> Expr
§impl From<ExprExists> for Expr
impl From<ExprExists> for Expr
§fn from(value: ExprExists) -> Expr
fn from(value: ExprExists) -> Expr
§impl From<ExprInList> for Expr
impl From<ExprInList> for Expr
§fn from(value: ExprInList) -> Expr
fn from(value: ExprInList) -> Expr
§impl From<ExprInSubquery> for Expr
impl From<ExprInSubquery> for Expr
§fn from(value: ExprInSubquery) -> Expr
fn from(value: ExprInSubquery) -> Expr
§impl From<ExprIsNull> for Expr
impl From<ExprIsNull> for Expr
§fn from(value: ExprIsNull) -> Expr
fn from(value: ExprIsNull) -> Expr
§impl From<ExprIsVariant> for Expr
impl From<ExprIsVariant> for Expr
§fn from(value: ExprIsVariant) -> Expr
fn from(value: ExprIsVariant) -> Expr
§impl From<ExprProject> for Expr
impl From<ExprProject> for Expr
§fn from(value: ExprProject) -> Expr
fn from(value: ExprProject) -> Expr
§impl From<ExprRecord> for Expr
impl From<ExprRecord> for Expr
§fn from(value: ExprRecord) -> Expr
fn from(value: ExprRecord) -> Expr
§impl From<ExprReference> for Expr
impl From<ExprReference> for Expr
§fn from(value: ExprReference) -> Expr
fn from(value: ExprReference) -> Expr
§impl From<FuncLastInsertId> for Expr
impl From<FuncLastInsertId> for Expr
§fn from(value: FuncLastInsertId) -> Expr
fn from(value: FuncLastInsertId) -> Expr
§impl<const N: usize> Like<[Value; N]> for Expr
Like implementation for expressions against arrays of Values
impl<const N: usize> Like<[Value; N]> for Expr
Like implementation for expressions against arrays of Values
§impl<T1, T2, T3> Like<(T1, T2, T3)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3>,
impl<T1, T2, T3> Like<(T1, T2, T3)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3>,
§fn like(&self, pattern: &(T1, T2, T3)) -> bool
fn like(&self, pattern: &(T1, T2, T3)) -> bool
§impl<T1, T2, T3, T4> Like<(T1, T2, T3, T4)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4>,
impl<T1, T2, T3, T4> Like<(T1, T2, T3, T4)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4>,
§fn like(&self, pattern: &(T1, T2, T3, T4)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4)) -> bool
§impl<T1, T2, T3, T4, T5> Like<(T1, T2, T3, T4, T5)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5>,
impl<T1, T2, T3, T4, T5> Like<(T1, T2, T3, T4, T5)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5)) -> bool
§impl<T1, T2, T3, T4, T5, T6> Like<(T1, T2, T3, T4, T5, T6)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6>,
impl<T1, T2, T3, T4, T5, T6> Like<(T1, T2, T3, T4, T5, T6)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6)) -> bool
§impl<T1, T2, T3, T4, T5, T6, T7> Like<(T1, T2, T3, T4, T5, T6, T7)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7>,
impl<T1, T2, T3, T4, T5, T6, T7> Like<(T1, T2, T3, T4, T5, T6, T7)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7)) -> bool
§impl<T1, T2, T3, T4, T5, T6, T7, T8> Like<(T1, T2, T3, T4, T5, T6, T7, T8)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8>,
impl<T1, T2, T3, T4, T5, T6, T7, T8> Like<(T1, T2, T3, T4, T5, T6, T7, T8)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8)) -> bool
§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9>,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9)) -> bool
§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9> + Like<T10>,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9> + Like<T10>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)) -> bool
§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9> + Like<T10> + Like<T11>,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9> + Like<T10> + Like<T11>,
§fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> bool
fn like(&self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> bool
§impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9> + Like<T10> + Like<T11> + Like<T12>,
impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Like<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> for Exprwhere
Expr: Like<T1> + Like<T2> + Like<T3> + Like<T4> + Like<T5> + Like<T6> + Like<T7> + Like<T8> + Like<T9> + Like<T10> + Like<T11> + Like<T12>,
§fn like(
&self,
pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12),
) -> bool
fn like( &self, pattern: &(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), ) -> bool
§impl<T0, T1, T2> PartialEq<(T0, T1, T2)> for Expr
impl<T0, T1, T2> PartialEq<(T0, T1, T2)> for Expr
§impl<T0, T1, T2, T3> PartialEq<(T0, T1, T2, T3)> for Expr
impl<T0, T1, T2, T3> PartialEq<(T0, T1, T2, T3)> for Expr
§impl<T0, T1, T2, T3, T4> PartialEq<(T0, T1, T2, T3, T4)> for Expr
impl<T0, T1, T2, T3, T4> PartialEq<(T0, T1, T2, T3, T4)> for Expr
§impl<T0, T1, T2, T3, T4, T5> PartialEq<(T0, T1, T2, T3, T4, T5)> for Expr
impl<T0, T1, T2, T3, T4, T5> PartialEq<(T0, T1, T2, T3, T4, T5)> for Expr
§impl<T0, T1, T2, T3, T4, T5, T6> PartialEq<(T0, T1, T2, T3, T4, T5, T6)> for Expr
impl<T0, T1, T2, T3, T4, T5, T6> PartialEq<(T0, T1, T2, T3, T4, T5, T6)> for Expr
§impl<T0, T1, T2, T3, T4, T5, T6, T7> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7)> for Expr
impl<T0, T1, T2, T3, T4, T5, T6, T7> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7)> for Expr
§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8>,
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8>,
§fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8)) -> bool
fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8)) -> bool
self and other values to be equal, and is used by ==.§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9>,
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9>,
§fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)) -> bool
fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)) -> bool
self and other values to be equal, and is used by ==.§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10>,
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10>,
§fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)) -> bool
fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)) -> bool
self and other values to be equal, and is used by ==.§impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10> + PartialEq<T11>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10> + PartialEq<T11>,
impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> PartialEq<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> for Exprwhere
Expr: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10> + PartialEq<T11>,
Value: PartialEq<T0> + PartialEq<T1> + PartialEq<T2> + PartialEq<T3> + PartialEq<T4> + PartialEq<T5> + PartialEq<T6> + PartialEq<T7> + PartialEq<T8> + PartialEq<T9> + PartialEq<T10> + PartialEq<T11>,
§fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> bool
fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)) -> bool
self and other values to be equal, and is used by ==.