pub trait PlanVTable:
'static
+ Clone
+ Sized
+ Send
+ Sync
+ Debug {
type PlanData: 'static + Send + Sync + Clone + Debug;
type Metadata: SerializeMetadata + DeserializeMetadata + Debug;
// Required methods
fn id(&self) -> PlanId;
fn metadata(plan: &Plan<Self>) -> Option<Self::Metadata>;
// Provided methods
fn fmt(plan: &Plan<Self>, formatter: &mut Formatter<'_>) -> Result { ... }
fn with_children(
plan: &Plan<Self>,
children: &PlanChildren,
data: &mut Self::PlanData,
) -> VortexResult<()> { ... }
fn child_name(plan: &Plan<Self>, index: usize) -> Cow<'_, str> { ... }
}Expand description
Operator-specific behavior for a typed Plan.
Common fields — dtype, row count, and children — are stored outside the erased operator data. Implementations own only their operator-specific data, its metadata codec, and a callback for refreshing cached data after generic child replacement.
Operators describe physical work over a row domain. Their identity and operator-specific data do not depend on the source layout kind. The common lazy-child storage may nevertheless own a hidden source-layout reference used for on-demand lowering.
Required Associated Types§
Sourcetype PlanData: 'static + Send + Sync + Clone + Debug
type PlanData: 'static + Send + Sync + Clone + Debug
Operator-specific data, excluding children.
Children belong in PlanParts::children so that
traversal and rewriting can discover them generically.
Sourcetype Metadata: SerializeMetadata + DeserializeMetadata + Debug
type Metadata: SerializeMetadata + DeserializeMetadata + Debug
Serialized form of PlanData.
Required Methods§
Provided Methods§
Sourcefn fmt(plan: &Plan<Self>, formatter: &mut Formatter<'_>) -> Result
fn fmt(plan: &Plan<Self>, formatter: &mut Formatter<'_>) -> Result
Writes operator-specific fields after the plan’s standard display summary.
Sourcefn with_children(
plan: &Plan<Self>,
children: &PlanChildren,
data: &mut Self::PlanData,
) -> VortexResult<()>
fn with_children( plan: &Plan<Self>, children: &PlanChildren, data: &mut Self::PlanData, ) -> VortexResult<()>
Refreshes cloned operator data after the common child container is replaced.
The plan layer clones PlanData, replaces the children externally, and
invokes this callback. Implementations validate the new children and update any derived
values in data; they do not rebuild the plan itself.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".