pub(super) struct CompiledGroup {
pub driver: Driver,
pub terms: Vec<CTerm>,
pub driver_term: Option<CTerm>,
pub driver_exact: bool,
}Fields§
§driver: Driver§terms: Vec<CTerm>Residual matchers (cost-ordered); the driver’s own condition is fully checked by the sweep and removed from here.
driver_term: Option<CTerm>The term the driver was built from (None for FullScan/MatchAll).
The sweep never reads it — it exists so cached-query refinement can
re-evaluate the complete group per candidate (exec::refine), so
subsumption sees every condition (subsume.rs), and so the exec can
verify it per candidate when the sweep was a superset (below).
driver_exact: boolFalse when the source term is case-exact: the folded sweep then
over-approximates and driver_term must be verified per candidate.
Implementations§
Source§impl CompiledGroup
impl CompiledGroup
Sourcepub(super) fn all_terms(&self) -> impl Iterator<Item = &CTerm>
pub(super) fn all_terms(&self) -> impl Iterator<Item = &CTerm>
Every condition of this AND group: the driver’s source term (most selective, so first) followed by the cost-ordered residuals.
Sourcepub(super) fn residual_terms(&self) -> impl Iterator<Item = &CTerm>
pub(super) fn residual_terms(&self) -> impl Iterator<Item = &CTerm>
The conditions the sweep did not fully check: the residuals, plus the driver’s source term when the sweep was a folded superset.
Auto Trait Implementations§
impl Freeze for CompiledGroup
impl RefUnwindSafe for CompiledGroup
impl Send for CompiledGroup
impl Sync for CompiledGroup
impl Unpin for CompiledGroup
impl UnsafeUnpin for CompiledGroup
impl UnwindSafe for CompiledGroup
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more