pub trait ArrayOptimizer {
// Required methods
fn optimize(&self) -> VortexResult<ArrayRef>;
fn optimize_ctx(&self, session: &VortexSession) -> VortexResult<ArrayRef>;
fn optimize_recursive(
&self,
session: &VortexSession,
) -> VortexResult<ArrayRef>;
}Expand description
Extension trait for optimizing array trees using reduce/reduce_parent rules.
Required Methods§
Sourcefn optimize(&self) -> VortexResult<ArrayRef>
fn optimize(&self) -> VortexResult<ArrayRef>
Optimize the root array node by running reduce and reduce_parent rules to fixpoint.
This uses only static rules registered on encoding vtables. Use Self::optimize_ctx
when a session-scoped kernels::ArrayKernels registry should participate.
Sourcefn optimize_ctx(&self, session: &VortexSession) -> VortexResult<ArrayRef>
fn optimize_ctx(&self, session: &VortexSession) -> VortexResult<ArrayRef>
Optimize the root array node using static rules and the active
kernels::ArrayKernels registry on session, if any.
Session kernels are checked for each (parent_encoding_id, child_encoding_id) pair before
the child’s static PARENT_RULES. The registry comes from the kernels::KernelSession on
session, if any. If session does not contain a kernels::KernelSession, this behaves
like Self::optimize.
Sourcefn optimize_recursive(&self, session: &VortexSession) -> VortexResult<ArrayRef>
fn optimize_recursive(&self, session: &VortexSession) -> VortexResult<ArrayRef>
Optimize the entire array tree recursively (root and all descendants).
This uses the same session-aware rule ordering as Self::optimize_ctx for every node in
the tree.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".