solverforge_solver/planning/scalar/
assignment.rs1pub type ScalarAssignmentRule<S> = fn(&S, usize, usize, usize, usize) -> bool;
2
3pub(crate) struct ScalarAssignmentDeclaration<S> {
4 pub(crate) required_entity: Option<fn(&S, usize) -> bool>,
5 pub(crate) capacity_key: Option<fn(&S, usize, usize) -> Option<usize>>,
6 pub(crate) position_key: Option<fn(&S, usize) -> i64>,
7 pub(crate) sequence_key: Option<fn(&S, usize, usize) -> Option<usize>>,
8 pub(crate) entity_order: Option<fn(&S, usize) -> i64>,
9 pub(crate) value_order: Option<fn(&S, usize, usize) -> i64>,
10 pub(crate) assignment_rule: Option<ScalarAssignmentRule<S>>,
11}
12
13impl<S> Clone for ScalarAssignmentDeclaration<S> {
14 fn clone(&self) -> Self {
15 *self
16 }
17}
18
19impl<S> Copy for ScalarAssignmentDeclaration<S> {}
20
21impl<S> Default for ScalarAssignmentDeclaration<S> {
22 fn default() -> Self {
23 Self {
24 required_entity: None,
25 capacity_key: None,
26 position_key: None,
27 sequence_key: None,
28 entity_order: None,
29 value_order: None,
30 assignment_rule: None,
31 }
32 }
33}