Skip to main content

DynamicScalarAssignmentMetadata

Trait DynamicScalarAssignmentMetadata 

Source
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§

Source

fn capabilities(&self) -> DynamicScalarAssignmentMetadataCapabilities

Source

fn required_entity(&self, solution: &S, entity_index: usize) -> bool

Source

fn capacity_key( &self, solution: &S, entity_index: usize, value: usize, ) -> Option<usize>

Source

fn position_key(&self, solution: &S, entity_index: usize) -> Option<i64>

Source

fn sequence_key( &self, solution: &S, entity_index: usize, value: usize, ) -> Option<usize>

Source

fn entity_order_key(&self, solution: &S, entity_index: usize) -> Option<i64>

Source

fn value_order_key( &self, solution: &S, entity_index: usize, value: usize, ) -> Option<i64>

Source

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".

Implementors§