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.
Variants§
And(ExprAnd)
AND a set of binary expressions
Any(ExprAny)
ANY - returns true if any of the items evaluate to true
Arg(ExprArg)
An argument when the expression is a function body
BinaryOp(ExprBinaryOp)
Binary expression
Cast(ExprCast)
Cast an expression to a different type
Default
Suggests that the database should use its default value. Useful for auto-increment fields and other columns with default values.
Error(ExprError)
An error expression that fails evaluation with a message.
Exists(ExprExists)
An exists expression [ NOT ] EXISTS(SELECT ...), used in expressions like
WHERE [ NOT ] EXISTS (SELECT ...).
Func(ExprFunc)
Function call
InList(ExprInList)
In list
InSubquery(ExprInSubquery)
The expression is contained by the given subquery
IsNull(ExprIsNull)
Whether an expression is (or is not) null. This is different from a binary expression because of how databases treat null comparisons.
IsVariant(ExprIsVariant)
Whether an expression evaluates to a specific enum variant.
Let(ExprLet)
A scoped binding expression (transient — inlined before planning)
Map(ExprMap)
Apply an expression to each item in a list
Match(ExprMatch)
A match expression that dispatches on a subject expression
Not(ExprNot)
Negates a boolean expression
Or(ExprOr)
OR a set of binary expressions
Project(ExprProject)
Project an expression
Record(ExprRecord)
Evaluates to a tuple value
Reference(ExprReference)
Reference a value from within the statement itself.
List(ExprList)
A list of expressions of the same type
Stmt(ExprStmt)
Evaluate a sub-statement
Value(Value)
Evaluates to a constant value reference
Implementations§
Source§impl Expr
impl Expr
pub const TRUE: Expr
pub const FALSE: Expr
pub const DEFAULT: Expr = Expr::Default
pub fn null() -> Self
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
pub fn is_stmt(&self) -> bool
Sourcepub 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_arg(&self) -> bool
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.
pub fn into_value(self) -> Value
pub fn into_stmt(self) -> ExprStmt
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.
pub fn map_projections(&self, f: impl FnMut(&Projection) -> Projection) -> Self
pub fn entry(&self, path: impl EntryPath) -> Option<Entry<'_>>
pub fn entry_mut(&mut self, path: impl EntryPath) -> EntryMut<'_>
pub fn take(&mut self) -> Self
pub fn substitute(&mut self, input: impl Input)
Source§impl Expr
impl Expr
pub fn binary_op( lhs: impl Into<Self>, op: BinaryOp, rhs: impl Into<Self>, ) -> Self
pub fn eq(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
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
pub fn ge(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn gt(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn le(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn lt(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
pub fn ne(lhs: impl Into<Self>, rhs: impl Into<Self>) -> Self
Source§impl Expr
impl Expr
pub fn in_subquery(lhs: impl Into<Self>, rhs: impl Into<Query>) -> Self
pub fn is_in_subquery(&self) -> bool
Source§impl Expr
impl Expr
pub fn list<T>(items: impl IntoIterator<Item = T>) -> Selfwhere
T: Into<Self>,
pub fn list_from_vec(items: Vec<Self>) -> Self
pub fn is_list(&self) -> bool
pub fn is_list_empty(&self) -> bool
pub fn expect_list(&self) -> &ExprList
pub fn expect_list_mut(&mut self) -> &mut ExprList
pub fn unwrap_list(self) -> ExprList
Source§impl Expr
impl Expr
pub fn project(base: impl Into<Self>, projection: impl Into<Projection>) -> Self
pub fn arg_project( expr_arg: impl Into<ExprArg>, projection: impl Into<Projection>, ) -> Self
pub fn is_project(&self) -> bool
pub fn as_project(&self) -> &ExprProject
Source§impl Expr
impl Expr
pub fn record<T>(items: impl IntoIterator<Item = T>) -> Selfwhere
T: Into<Self>,
pub fn record_from_vec(fields: Vec<Self>) -> Self
pub fn is_record(&self) -> bool
pub fn as_record(&self) -> Option<&ExprRecord>
pub fn as_record_unwrap(&self) -> &ExprRecord
pub fn as_record_mut(&mut self) -> &mut ExprRecord
pub fn into_record(self) -> ExprRecord
pub fn record_len(&self) -> Option<usize>
pub fn into_record_items(self) -> Option<impl Iterator<Item = Expr>>
Source§impl Expr
impl Expr
pub fn is_expr_reference(&self) -> bool
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
pub fn is_field(&self) -> bool
Sourcepub fn ref_parent_model() -> Self
pub fn ref_parent_model() -> Self
Create a model reference to the parent model
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
pub fn column(column: impl Into<ExprReference>) -> Self
pub fn is_column(&self) -> bool
pub fn as_expr_reference(&self) -> Option<&ExprReference>
pub fn as_expr_reference_unwrap(&self) -> &ExprReference
pub fn as_expr_column(&self) -> Option<&ExprColumn>
pub fn as_expr_column_unwrap(&self) -> &ExprColumn
Source§impl Expr
impl Expr
pub fn count_star() -> Self
Source§impl Expr
impl Expr
pub fn last_insert_id() -> Self
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 ==.