solverforge-solver 0.14.0

Solver engine for SolverForge
Documentation
#[derive(Clone, Copy)]
pub(super) struct ForcedAssignment {
    pub(super) entity_index: usize,
    pub(super) value: usize,
}

#[derive(Clone, Copy)]
pub(super) struct SequenceEdge {
    pub(super) value: usize,
    pub(super) left_sequence: usize,
    pub(super) right_sequence: usize,
    pub(super) forced_left: Option<ForcedAssignment>,
    pub(super) forced_right: Option<ForcedAssignment>,
}

impl SequenceEdge {
    pub(super) fn new(value: usize, left_sequence: usize, right_sequence: usize) -> Self {
        Self {
            value,
            left_sequence,
            right_sequence,
            forced_left: None,
            forced_right: None,
        }
    }

    pub(super) fn with_forced_left(mut self, forced_left: ForcedAssignment) -> Self {
        self.forced_left = Some(forced_left);
        self
    }

    pub(super) fn with_forced_right(mut self, forced_right: ForcedAssignment) -> Self {
        self.forced_right = Some(forced_right);
        self
    }
}