solverforge-macros 0.8.13

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

#[planning_entity]
struct Visit {
    #[planning_id]
    id: usize,
}

#[planning_entity]
struct Route {
    #[planning_id]
    id: usize,

    #[planning_list_variable(element_collection = "visits")]
    visits: Vec<usize>,
}

#[planning_solution]
struct Plan {
    #[planning_entity_collection]
    routes: Vec<Route>,

    #[planning_entity_collection]
    visits: Vec<Visit>,

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

fn main() {
    let mut plan = Plan {
        routes: Vec::new(),
        visits: Vec::new(),
        score: None,
    };

    let _ = Plan::list_len_static(&plan, 0);
    let _ = Plan::element_count(&plan);
    let _ = Plan::routes_list_len_static(&plan, 0);
    let _ = Plan::routes_element_count(&plan);
    Plan::assign_element(&mut plan, 0, 0);
    Plan::routes_assign_element(&mut plan, 0, 0);
}