Skip to main content

solverforge_solver/planning/scalar/
assignment.rs

1pub 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}