solverforge-macros 0.12.0

Derive macros for SolverForge constraint solver
Documentation
use solverforge::prelude::*;
use solverforge::stream::ConstraintFactory;

use super::{Task, Worker};

#[planning_solution(constraints = "constraints")]
pub struct Plan {
    #[problem_fact_collection]
    pub workers: Vec<Worker>,

    #[planning_entity_collection]
    pub tasks: Vec<Task>,

    #[planning_score]
    pub score: Option<HardSoftScore>,
}

fn constraints() -> impl ConstraintSet<Plan, HardSoftScore> {
    (
        ConstraintFactory::<Plan, HardSoftScore>::new()
            .for_each(Plan::tasks())
            .penalize_soft()
            .named("penalize_tasks"),
    )
}