Skip to main content

DynamicListMetadata

Trait DynamicListMetadata 

Source
pub trait DynamicListMetadata<S>: Send + Sync {
Show 16 methods // Required methods fn entity_class(&self) -> EntityClassId; fn variable(&self) -> VariableId; fn capabilities(&self) -> DynamicListMetadataCapabilities; fn element_owner(&self, solution: &S, element: usize) -> Option<usize>; fn construction_order_key( &self, solution: &S, element: usize, ) -> Option<i64>; fn precedence_duration(&self, solution: &S, element: usize) -> Option<usize>; fn extend_precedence_successors( &self, solution: &S, element: usize, successors: &mut Vec<usize>, ) -> bool; fn cross_position_distance( &self, solution: &S, from_entity: usize, from_position: usize, to_entity: usize, to_position: usize, ) -> Option<f64>; fn intra_position_distance( &self, solution: &S, entity: usize, from_position: usize, to_position: usize, ) -> Option<f64>; fn route_depot(&self, solution: &S, entity: usize) -> Option<usize>; fn route_distance( &self, solution: &S, entity: usize, from: usize, to: usize, ) -> Option<i64>; fn route_feasible( &self, solution: &S, entity: usize, route: &[usize], ) -> Option<bool>; fn savings_depot(&self, solution: &S, entity: usize) -> Option<usize>; fn savings_metric_class(&self, solution: &S, entity: usize) -> Option<usize>; fn savings_distance( &self, solution: &S, entity: usize, from: usize, to: usize, ) -> Option<i64>; fn savings_feasible( &self, solution: &S, entity: usize, route: &[usize], ) -> Option<bool>;
}
Expand description

Slot-bound immutable metadata used by canonical dynamic-list phases.

This deliberately contains no discovery API, current-phase lookup, or global/TLS state. Binding crates compile schema fields and callbacks once into one implementation for a specific (entity_class, variable) pair, then attach it to the corresponding DynamicListVariableSlot. Runtime callers validate Self::capabilities before invoking a selected family; an implementation must not synthesize depot, metric, distance, feasibility, precedence, or ownership defaults.

Required Methods§

Source

fn entity_class(&self) -> EntityClassId

Source

fn variable(&self) -> VariableId

Source

fn capabilities(&self) -> DynamicListMetadataCapabilities

Source

fn element_owner(&self, solution: &S, element: usize) -> Option<usize>

Fixed owner for one element when owner restriction is declared. None means that element is unrestricted; callers must consult capabilities().element_owner to distinguish an unavailable owner source from an unrestricted element.

Source

fn construction_order_key(&self, solution: &S, element: usize) -> Option<i64>

Deterministic construction ordering key for one element.

Source

fn precedence_duration(&self, solution: &S, element: usize) -> Option<usize>

Duration used by full precedence-aware construction and scheduling. It may be absent when this slot deliberately supplies successor-only metadata for ListRuin.

Source

fn extend_precedence_successors( &self, solution: &S, element: usize, successors: &mut Vec<usize>, ) -> bool

Extends successors with fixed successors in declared order. Returns false only when successor metadata is unavailable for this slot.

The concrete output buffer preserves the object-safe dynamic metadata seam without putting a dyn FnMut dispatch in a precedence candidate loop.

Source

fn cross_position_distance( &self, solution: &S, from_entity: usize, from_position: usize, to_entity: usize, to_position: usize, ) -> Option<f64>

Explicit cross-route position metric for nearby list neighborhoods.

Source

fn intra_position_distance( &self, solution: &S, entity: usize, from_position: usize, to_position: usize, ) -> Option<f64>

Explicit within-route position metric for nearby K-opt/neighborhoods.

Source

fn route_depot(&self, solution: &S, entity: usize) -> Option<usize>

Strict route-local bundle used by K-opt and other route phases.

Reading and replacing a route are deliberately not metadata callbacks. They come from the slot’s DynamicListAccess (get and one logical replace operation) so every route mutation follows the same dirty-row/revision path as every other list mutation. A canonical phase must require both that base access and this complete metadata bundle: depot, distance, and feasibility.

Source

fn route_distance( &self, solution: &S, entity: usize, from: usize, to: usize, ) -> Option<i64>

Source

fn route_feasible( &self, solution: &S, entity: usize, route: &[usize], ) -> Option<bool>

Source

fn savings_depot(&self, solution: &S, entity: usize) -> Option<usize>

Savings-specific bundle used only by Clarke-Wright construction.

Source

fn savings_metric_class(&self, solution: &S, entity: usize) -> Option<usize>

Source

fn savings_distance( &self, solution: &S, entity: usize, from: usize, to: usize, ) -> Option<i64>

Source

fn savings_feasible( &self, solution: &S, entity: usize, route: &[usize], ) -> Option<bool>

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§