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.