Struct diesel::expression::array_comparison::NotIn
source · #[non_exhaustive]pub struct NotIn<T, U> {
pub left: T,
pub values: U,
}
Available on crate feature
i-implement-a-third-party-backend-and-opt-into-breaking-changes
only.Expand description
Query dsl node that represents a left NOT IN (values)
expression
Third party backend can customize the QueryFragment
implementation of this query dsl node via
SqlDialect::ArrayComparison
. A customized implementation
is expected to provide the same sematics as a ANSI SQL
NOT IN
expression.0
The postgres backend provided a specialized implementation
by using left = ALL(values)
as optimized variant instead.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.left: T
The expression on the left side of the NOT IN
keyword
values: U
The values clause of the NOT IN
expression
Trait Implementations§
source§impl<T, U> Expression for NotIn<T, U>where
T: Expression,
U: Expression<SqlType = T::SqlType>,
impl<T, U> Expression for NotIn<T, U>where T: Expression, U: Expression<SqlType = T::SqlType>,
source§impl<T, U, DB> QueryFragment<DB, AnsiSqlArrayComparison> for NotIn<T, U>where
DB: Backend + SqlDialect<ArrayComparison = AnsiSqlArrayComparison>,
T: QueryFragment<DB>,
U: QueryFragment<DB> + MaybeEmpty,
impl<T, U, DB> QueryFragment<DB, AnsiSqlArrayComparison> for NotIn<T, U>where DB: Backend + SqlDialect<ArrayComparison = AnsiSqlArrayComparison>, T: QueryFragment<DB>, U: QueryFragment<DB> + MaybeEmpty,
source§fn walk_ast<'b>(&'b self, out: AstPass<'_, 'b, DB>) -> QueryResult<()>
fn walk_ast<'b>(&'b self, out: AstPass<'_, 'b, DB>) -> QueryResult<()>
Walk over this
QueryFragment
for all passes. Read moresource§fn to_sql(&self, out: &mut DB::QueryBuilder, backend: &DB) -> QueryResult<()>
fn to_sql(&self, out: &mut DB::QueryBuilder, backend: &DB) -> QueryResult<()>
Converts this
QueryFragment
to its SQL representation. Read moresource§fn collect_binds<'b>(
&'b self,
out: &mut <DB as HasBindCollector<'b>>::BindCollector,
metadata_lookup: &mut DB::MetadataLookup,
backend: &'b DB
) -> QueryResult<()>
fn collect_binds<'b>( &'b self, out: &mut <DB as HasBindCollector<'b>>::BindCollector, metadata_lookup: &mut DB::MetadataLookup, backend: &'b DB ) -> QueryResult<()>
Serializes all bind parameters in this query. Read more
source§fn is_safe_to_cache_prepared(&self, backend: &DB) -> QueryResult<bool>
fn is_safe_to_cache_prepared(&self, backend: &DB) -> QueryResult<bool>
Is this query safe to store in the prepared statement cache? Read more
source§impl<T: QueryId, U: QueryId> QueryId for NotIn<T, U>
impl<T: QueryId, U: QueryId> QueryId for NotIn<T, U>
source§impl<T, U, __GroupByClause> ValidGrouping<__GroupByClause> for NotIn<T, U>where
T: ValidGrouping<__GroupByClause>,
U: ValidGrouping<__GroupByClause>,
T::IsAggregate: MixedAggregates<U::IsAggregate>,
impl<T, U, __GroupByClause> ValidGrouping<__GroupByClause> for NotIn<T, U>where T: ValidGrouping<__GroupByClause>, U: ValidGrouping<__GroupByClause>, T::IsAggregate: MixedAggregates<U::IsAggregate>,
§type IsAggregate = <<T as ValidGrouping<__GroupByClause>>::IsAggregate as MixedAggregates<<U as ValidGrouping<__GroupByClause>>::IsAggregate>>::Output
type IsAggregate = <<T as ValidGrouping<__GroupByClause>>::IsAggregate as MixedAggregates<<U as ValidGrouping<__GroupByClause>>::IsAggregate>>::Output
Is this expression aggregate? Read more
impl<T, U, QS> AppearsOnTable<QS> for NotIn<T, U>where NotIn<T, U>: Expression, T: AppearsOnTable<QS>, U: AppearsOnTable<QS>,
impl<T: Copy, U: Copy> Copy for NotIn<T, U>
impl<T, U, QS> SelectableExpression<QS> for NotIn<T, U>where NotIn<T, U>: AppearsOnTable<QS>, T: SelectableExpression<QS>, U: SelectableExpression<QS>,
Auto Trait Implementations§
impl<T, U> RefUnwindSafe for NotIn<T, U>where T: RefUnwindSafe, U: RefUnwindSafe,
impl<T, U> Send for NotIn<T, U>where T: Send, U: Send,
impl<T, U> Sync for NotIn<T, U>where T: Sync, U: Sync,
impl<T, U> Unpin for NotIn<T, U>where T: Unpin, U: Unpin,
impl<T, U> UnwindSafe for NotIn<T, U>where T: UnwindSafe, U: UnwindSafe,
Blanket Implementations§
source§impl<T, ST> AsExpression<ST> for Twhere
T: Expression<SqlType = ST>,
ST: SqlType + TypedExpressionType,
impl<T, ST> AsExpression<ST> for Twhere T: Expression<SqlType = ST>, ST: SqlType + TypedExpressionType,
§type Expression = T
type Expression = T
The expression being returned
source§fn as_expression(self) -> T
fn as_expression(self) -> T
Perform the conversion
source§impl<Conn, DB, T> ExecuteDsl<Conn, DB> for Twhere
Conn: Connection<Backend = DB>,
DB: Backend,
T: QueryFragment<DB, NotSpecialized> + QueryId,
impl<Conn, DB, T> ExecuteDsl<Conn, DB> for Twhere Conn: Connection<Backend = DB>, DB: Backend, T: QueryFragment<DB, NotSpecialized> + QueryId,
source§impl<T> IntoSql for T
impl<T> IntoSql for T
source§fn into_sql<T>(self) -> AsExprOf<Self, T>where
Self: AsExpression<T> + Sized,
T: SqlType + TypedExpressionType,
fn into_sql<T>(self) -> AsExprOf<Self, T>where Self: AsExpression<T> + Sized, T: SqlType + TypedExpressionType,
Convert
self
to an expression for Diesel’s query builder. Read moresource§fn as_sql<'a, T>(&'a self) -> AsExprOf<&'a Self, T>where
&'a Self: AsExpression<T>,
T: SqlType + TypedExpressionType,
fn as_sql<'a, T>(&'a self) -> AsExprOf<&'a Self, T>where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,
Convert
&self
to an expression for Diesel’s query builder. Read more