pub struct Keyed<K, Req, S: SqlType> { /* private fields */ }Expand description
An expression that carries its own row key K: count() and the window
functions, whose identity is the function that produced them. Selecting
two of the same one into a row is what row::Row::get rejects, and what
LabelExt::label exists to resolve.
Trait Implementations§
Source§impl<K, Req, S: SqlType> IntoExpr for Keyed<K, Req, S>
impl<K, Req, S: SqlType> IntoExpr for Keyed<K, Req, S>
Source§type Sql = S
type Sql = S
The SQL type this expression has. An associated type rather than a
parameter because every implementor has exactly one — a column its
declared type, a literal its leaf type — which is what lets a
mismatch report itself as
Comparable/AssignsTo rather than as
an inference failure on a type nobody wrote.type Req = Req
fn into_expr(self) -> Expr<Req, S>
impl<K: Spelled, Req, S: SqlType> LookupKey for Keyed<K, Req, S>
Source§impl<K, Req, S: SqlType, Scope, Idx> RowField<Scope, Idx> for Keyed<K, Req, S>where
Scope: Superset<Req, Idx>,
impl<K, Req, S: SqlType, Scope, Idx> RowField<Scope, Idx> for Keyed<K, Req, S>where
Scope: Superset<Req, Idx>,
Source§impl<K, Req, S: SqlType, Scope, Idx> SelectionPart<Scope, Idx> for Keyed<K, Req, S>
impl<K, Req, S: SqlType, Scope, Idx> SelectionPart<Scope, Idx> for Keyed<K, Req, S>
Auto Trait Implementations§
impl<K, Req, S> Freeze for Keyed<K, Req, S>
impl<K, Req, S> RefUnwindSafe for Keyed<K, Req, S>
impl<K, Req, S> Send for Keyed<K, Req, S>
impl<K, Req, S> Sync for Keyed<K, Req, S>
impl<K, Req, S> Unpin for Keyed<K, Req, S>
impl<K, Req, S> UnsafeUnpin for Keyed<K, Req, S>
impl<K, Req, S> UnwindSafe for Keyed<K, Req, S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D, Scope, Req, Idxs, T> Condition<D, Scope, Idxs> for T
impl<D, Scope, Req, Idxs, T> Condition<D, Scope, Idxs> for T
fn into_predicate(self) -> Predicate<D, Scope>
Source§impl<T> ExprMethods for Twhere
T: IntoExpr,
impl<T> ExprMethods for Twhere
T: IntoExpr,
fn eq<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn ne<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn lt<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn lte<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn gt<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn gte<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
Source§fn is_null(self) -> Expr<Self::Req, Bool>
fn is_null(self) -> Expr<Self::Req, Bool>
x IS NULL. Not expressible as .eq(..): comparing to NULL with =
yields NULL, never true, so the two are different questions.fn is_not_null(self) -> Expr<Self::Req, Bool>
Source§fn and<Rhs: IntoExpr>(
self,
rhs: Rhs,
) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn and<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
a AND b. The boolean requirement is on the method rather than on
the receiver’s type, so every spelling a condition has — a
comparison, a sql! fragment, a Nullable<Bool> column — combines
with every other, the way .filter accepts them all.Source§fn or<Rhs: IntoExpr>(
self,
rhs: Rhs,
) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
fn or<Rhs: IntoExpr>( self, rhs: Rhs, ) -> Expr<<Self::Req as Concat<Rhs::Req>>::Output, Bool>
a OR b — see and.