Skip to main content

solverforge_solver/
model_support.rs

1use solverforge_core::domain::{PlanningSolution, SolutionDescriptor};
2
3use crate::builder::{ScalarGroupContext, ScalarVariableContext};
4
5pub trait PlanningModelSupport: PlanningSolution + Sized + 'static {
6    fn attach_descriptor_scalar_hooks(descriptor: &mut SolutionDescriptor);
7
8    fn attach_runtime_scalar_hooks(
9        context: ScalarVariableContext<Self>,
10    ) -> ScalarVariableContext<Self>;
11
12    fn attach_scalar_groups(
13        _scalar_variables: &[ScalarVariableContext<Self>],
14    ) -> Vec<ScalarGroupContext<Self>> {
15        Vec::new()
16    }
17
18    fn validate_model(descriptor: &SolutionDescriptor);
19
20    fn update_entity_shadows(
21        solution: &mut Self,
22        descriptor_index: usize,
23        entity_index: usize,
24    ) -> bool;
25
26    fn update_all_shadows(solution: &mut Self) -> bool;
27}