pub trait DynamicScalarAssignmentMetadata<S>: Send + Sync {
// Required methods
fn capabilities(&self) -> DynamicScalarAssignmentMetadataCapabilities;
fn required_entity(&self, solution: &S, entity_index: usize) -> bool;
fn capacity_key(
&self,
solution: &S,
entity_index: usize,
value: usize,
) -> Option<usize>;
fn position_key(&self, solution: &S, entity_index: usize) -> Option<i64>;
fn sequence_key(
&self,
solution: &S,
entity_index: usize,
value: usize,
) -> Option<usize>;
fn entity_order_key(&self, solution: &S, entity_index: usize) -> Option<i64>;
fn value_order_key(
&self,
solution: &S,
entity_index: usize,
value: usize,
) -> Option<i64>;
fn assignment_edge_allowed(
&self,
solution: &S,
left_entity: usize,
left_value: usize,
right_entity: usize,
right_value: usize,
) -> bool;
}Expand description
Object-safe metadata access for one dynamic scalar-assignment group.
Implementors are bound to a concrete group at model compilation time. They must not select a group indirectly from thread-local state, a runtime name lookup, or the active phase. Typed Rust groups retain their direct function-pointer metadata and never use this dynamic boundary.
Required Methods§
fn capabilities(&self) -> DynamicScalarAssignmentMetadataCapabilities
fn required_entity(&self, solution: &S, entity_index: usize) -> bool
fn capacity_key( &self, solution: &S, entity_index: usize, value: usize, ) -> Option<usize>
fn position_key(&self, solution: &S, entity_index: usize) -> Option<i64>
fn sequence_key( &self, solution: &S, entity_index: usize, value: usize, ) -> Option<usize>
fn entity_order_key(&self, solution: &S, entity_index: usize) -> Option<i64>
fn value_order_key( &self, solution: &S, entity_index: usize, value: usize, ) -> Option<i64>
fn assignment_edge_allowed( &self, solution: &S, left_entity: usize, left_value: usize, right_entity: usize, right_value: usize, ) -> bool
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".