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§
Source§impl Expr
impl Expr
Sourcepub fn eval(&self, input: impl Input) -> Result<Value>
pub fn eval(&self, input: impl Input) -> Result<Value>
Evaluates this expression using the provided Input for argument
and reference resolution.
Sourcepub fn eval_bool(&self, input: impl Input) -> Result<bool>
pub fn eval_bool(&self, input: impl Input) -> Result<bool>
Evaluates this expression and returns the result as a bool.
§Errors
Returns an error if the expression does not evaluate to a boolean.
Sourcepub fn eval_const(&self) -> Result<Value>
pub fn eval_const(&self) -> Result<Value>
Evaluates this expression as a constant (no external input).
Source§impl Expr
impl Expr
Sourcepub const DEFAULT: Expr = Expr::Default
pub const DEFAULT: Expr = Expr::Default
Alias for Expr::Default as a constant.
Sourcepub fn is_value_null(&self) -> bool
pub fn is_value_null(&self) -> bool
Is a value that evaluates to null
Sourcepub 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.
Sourcepub fn is_default(&self) -> bool
pub fn is_default(&self) -> bool
Returns true if the expression is the default expression
Sourcepub fn is_binary_op(&self) -> bool
pub fn is_binary_op(&self) -> bool
Returns true if the expression is a binary operation
Sourcepub 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.
Sourcepub fn into_value(self) -> Value
pub fn into_value(self) -> Value
Sourcepub 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
Sourcepub 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.
Sourcepub 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.
Sourcepub fn map_projections(&self, f: impl FnMut(&Projection) -> Projection) -> Self
pub fn map_projections(&self, f: impl FnMut(&Projection) -> Projection) -> Self
Returns a clone of this expression with all Projection nodes
transformed by f.
Sourcepub 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).
Sourcepub fn take(&mut self) -> Self
pub fn take(&mut self) -> Self
Takes the expression out, leaving Expr::Value(Value::Null) in its
place. Equivalent to std::mem::replace(self, Expr::null()).
Sourcepub 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.
Source§impl Expr
impl Expr
Sourcepub fn and(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn and(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
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.
Sourcepub fn and_from_vec(operands: Vec<Self>) -> Self
pub fn and_from_vec(operands: Vec<Self>) -> Self
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.
Source§impl Expr
impl Expr
Sourcepub fn binary_op(
lhs: impl Into<Self>,
op: BinaryOp,
rhs: impl Into<Self>,
) -> Self
pub fn binary_op( lhs: impl Into<Self>, op: BinaryOp, rhs: impl Into<Self>, ) -> Self
Creates a binary operation expression with the given operator.
Sourcepub fn eq(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn eq(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
Creates an equality (==) expression.
Sourcepub fn is_eq(&self) -> bool
pub fn is_eq(&self) -> bool
Returns true if the expression is a binary expression with the equality operator
Sourcepub fn ge(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn ge(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
Creates a greater-than-or-equal (>=) expression.
Sourcepub fn gt(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn gt(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
Creates a greater-than (>) expression.
Sourcepub fn le(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn le(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
Creates a less-than-or-equal (<=) expression.
Source§impl Expr
impl Expr
Sourcepub fn in_subquery(lhs: impl Into<Self>, rhs: impl Into<Query>) -> Self
pub fn in_subquery(lhs: impl Into<Self>, rhs: impl Into<Query>) -> Self
Creates an IN (subquery) expression: lhs IN (SELECT ...).
Sourcepub fn is_in_subquery(&self) -> bool
pub fn is_in_subquery(&self) -> bool
Returns true if this expression is an IN (subquery) check.
Source§impl Expr
impl Expr
Sourcepub fn is_variant(expr: impl Into<Self>, variant: VariantId) -> Self
pub fn is_variant(expr: impl Into<Self>, variant: VariantId) -> Self
Creates a variant check expression testing whether expr is the given
variant.
Source§impl Expr
impl Expr
Sourcepub fn list<T>(items: impl IntoIterator<Item = T>) -> Selfwhere
T: Into<Self>,
pub fn list<T>(items: impl IntoIterator<Item = T>) -> Selfwhere
T: Into<Self>,
Creates a list expression from an iterator of items convertible to Expr.
Sourcepub fn list_from_vec(items: Vec<Self>) -> Self
pub fn list_from_vec(items: Vec<Self>) -> Self
Creates a list expression from a pre-built vector of expressions.
Sourcepub 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(...))).
Sourcepub fn is_list_empty(&self) -> bool
pub fn is_list_empty(&self) -> bool
Returns true if this expression is an empty list.
Sourcepub fn as_list_unwrap(&self) -> &ExprList
pub fn as_list_unwrap(&self) -> &ExprList
Sourcepub fn as_list_mut_unwrap(&mut self) -> &mut ExprList
pub fn as_list_mut_unwrap(&mut self) -> &mut ExprList
Source§impl Expr
impl Expr
Sourcepub fn map(base: impl Into<Self>, map: impl Into<Self>) -> Self
pub fn map(base: impl Into<Self>, map: impl Into<Self>) -> Self
Creates a map expression that applies map to each element of base.
Sourcepub fn as_map(&self) -> Option<&ExprMap>
pub fn as_map(&self) -> Option<&ExprMap>
Returns a reference to the inner ExprMap if this is a map
expression, or None otherwise.
Sourcepub fn as_map_unwrap(&self) -> &ExprMap
pub fn as_map_unwrap(&self) -> &ExprMap
Source§impl Expr
impl Expr
Sourcepub fn or(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn or(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
Creates an OR expression from two operands.
Flattens nested ORs: or(or(a, b), c) produces or(a, b, c).
Sourcepub fn or_from_vec(operands: Vec<Self>) -> Self
pub fn or_from_vec(operands: Vec<Self>) -> Self
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.
Source§impl Expr
impl Expr
Sourcepub fn project(base: impl Into<Self>, projection: impl Into<Projection>) -> Self
pub fn project(base: impl Into<Self>, projection: impl Into<Projection>) -> Self
Creates a projection expression that extracts a field from base
using the given projection path.
Sourcepub fn arg_project(
expr_arg: impl Into<ExprArg>,
projection: impl Into<Projection>,
) -> Self
pub fn arg_project( expr_arg: impl Into<ExprArg>, projection: impl Into<Projection>, ) -> Self
Shorthand for Expr::project(Expr::arg(expr_arg), projection).
Sourcepub fn is_project(&self) -> bool
pub fn is_project(&self) -> bool
Returns true if this expression is a projection.
Sourcepub 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.
Sourcepub fn as_project_unwrap(&self) -> &ExprProject
pub fn as_project_unwrap(&self) -> &ExprProject
Source§impl Expr
impl Expr
Sourcepub fn record<T>(items: impl IntoIterator<Item = T>) -> Selfwhere
T: Into<Self>,
pub fn record<T>(items: impl IntoIterator<Item = T>) -> Selfwhere
T: Into<Self>,
Creates a record expression from an iterator of items convertible to Expr.
Sourcepub fn record_from_vec(fields: Vec<Self>) -> Self
pub fn record_from_vec(fields: Vec<Self>) -> Self
Creates a record expression from a pre-built vector of field expressions.
Sourcepub 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.
Sourcepub fn as_record_unwrap(&self) -> &ExprRecord
pub fn as_record_unwrap(&self) -> &ExprRecord
Sourcepub 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.
Sourcepub fn as_record_mut_unwrap(&mut self) -> &mut ExprRecord
pub fn as_record_mut_unwrap(&mut self) -> &mut ExprRecord
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Source§impl Expr
impl Expr
Sourcepub 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).
Sourcepub fn ref_self_field(field: impl Into<FieldId>) -> Self
pub fn ref_self_field(field: impl Into<FieldId>) -> Self
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.
Sourcepub fn ref_field(nesting: usize, field: impl Into<FieldId>) -> Self
pub fn ref_field(nesting: usize, field: impl Into<FieldId>) -> Self
Create a reference to a field at a specified nesting level
Sourcepub fn ref_parent_field(field: impl Into<FieldId>) -> Self
pub fn ref_parent_field(field: impl Into<FieldId>) -> Self
Create a reference to a field one level up
Sourcepub fn ref_parent_model() -> Self
pub fn ref_parent_model() -> Self
Creates a model reference to the parent (nesting level 1).
Sourcepub fn ref_ancestor_model(nesting: usize) -> Self
pub fn ref_ancestor_model(nesting: usize) -> Self
Create a model reference to the specified nesting level
Sourcepub fn column(column: impl Into<ExprReference>) -> Self
pub fn column(column: impl Into<ExprReference>) -> Self
Creates a column reference expression.
Sourcepub 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.
Sourcepub fn as_expr_reference_unwrap(&self) -> &ExprReference
pub fn as_expr_reference_unwrap(&self) -> &ExprReference
Sourcepub 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.
Sourcepub 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(_)).
Source§impl Expr
impl Expr
Sourcepub fn count_star() -> Self
pub fn count_star() -> Self
Creates a COUNT(*) expression.
Source§impl Expr
impl Expr
Sourcepub fn last_insert_id() -> Self
pub fn last_insert_id() -> Self
Creates a LAST_INSERT_ID() function expression.
Trait Implementations§
Source§impl From<&ExprColumn> for Expr
impl From<&ExprColumn> for Expr
Source§fn from(value: &ExprColumn) -> Self
fn from(value: &ExprColumn) -> Self
Source§impl From<&ExprReference> for Expr
impl From<&ExprReference> for Expr
Source§fn from(value: &ExprReference) -> Self
fn from(value: &ExprReference) -> Self
Source§impl From<ExprBinaryOp> for Expr
impl From<ExprBinaryOp> for Expr
Source§fn from(value: ExprBinaryOp) -> Self
fn from(value: ExprBinaryOp) -> Self
Source§impl From<ExprColumn> for Expr
impl From<ExprColumn> for Expr
Source§fn from(value: ExprColumn) -> Self
fn from(value: ExprColumn) -> Self
Source§impl From<ExprExists> for Expr
impl From<ExprExists> for Expr
Source§fn from(value: ExprExists) -> Self
fn from(value: ExprExists) -> Self
Source§impl From<ExprInList> for Expr
impl From<ExprInList> for Expr
Source§fn from(value: ExprInList) -> Self
fn from(value: ExprInList) -> Self
Source§impl From<ExprInSubquery> for Expr
impl From<ExprInSubquery> for Expr
Source§fn from(value: ExprInSubquery) -> Self
fn from(value: ExprInSubquery) -> Self
Source§impl From<ExprIsNull> for Expr
impl From<ExprIsNull> for Expr
Source§fn from(value: ExprIsNull) -> Self
fn from(value: ExprIsNull) -> Self
Source§impl From<ExprIsVariant> for Expr
impl From<ExprIsVariant> for Expr
Source§fn from(value: ExprIsVariant) -> Self
fn from(value: ExprIsVariant) -> Self
Source§impl From<ExprProject> for Expr
impl From<ExprProject> for Expr
Source§fn from(value: ExprProject) -> Self
fn from(value: ExprProject) -> Self
Source§impl From<ExprRecord> for Expr
impl From<ExprRecord> for Expr
Source§fn from(value: ExprRecord) -> Self
fn from(value: ExprRecord) -> Self
Source§impl From<ExprReference> for Expr
impl From<ExprReference> for Expr
Source§fn from(value: ExprReference) -> Self
fn from(value: ExprReference) -> Self
Source§impl From<FuncLastInsertId> for Expr
impl From<FuncLastInsertId> for Expr
Source§fn from(value: FuncLastInsertId) -> Self
fn from(value: FuncLastInsertId) -> Self
Source§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
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§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>,
Source§impl<T0, T1, T2> PartialEq<(T0, T1, T2)> for Expr
impl<T0, T1, T2> PartialEq<(T0, T1, T2)> for Expr
Source§impl<T0, T1, T2, T3> PartialEq<(T0, T1, T2, T3)> for Expr
impl<T0, T1, T2, T3> PartialEq<(T0, T1, T2, T3)> for Expr
Source§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
Source§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
Source§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
Source§fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6)) -> bool
fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6)) -> bool
self and other values to be equal, and is used by ==.Source§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
Source§fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7)) -> bool
fn eq(&self, other: &(T0, T1, T2, T3, T4, T5, T6, T7)) -> bool
self and other values to be equal, and is used by ==.Source§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>,
Source§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 ==.Source§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>,
Source§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 ==.Source§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>,
Source§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 ==.Source§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>,
Source§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 ==.