pub struct DynSelect<D, Output> { /* private fields */ }Expand description
The one unavoidable escape hatch in this design: a single static type
cannot mean “this table is joined” in one branch of an if and “it
isn’t” in another. Only the join skeleton is erased — every column
reference was already checked against a concrete Scope before
.erase(), and predicates keep the same closed ExprKind/Value
representation used everywhere else, with no Box<dyn _> involved.
Composition happens before erasure, which is why DynSelect offers no
further .filter()/.join(). It exists only to let two fully-built
branches with different join topology unify into one value.
Implementations§
Source§impl<D, Output> DynSelect<D, Output>
impl<D, Output> DynSelect<D, Output>
Sourcepub fn limit(self, n: impl IntoRowCount) -> Self
pub fn limit(self, n: impl IntoRowCount) -> Self
LIMIT/OFFSET survive erasure because they reference nothing: a
row count needs no proof that a table is joined. order_by doesn’t
follow them here — a sort key is a column reference, and the scope
that would justify it is exactly what .erase() gave up.