pumpkin_core/optimisation/
solution_callback.rs1use crate::branching::Brancher;
2use crate::results::SolutionReference;
3use crate::Solver;
4
5pub trait SolutionCallback<B: Brancher> {
6 fn on_solution_callback(&self, solver: &Solver, solution: SolutionReference, brancher: &B);
7}
8
9impl<T: Fn(&Solver, SolutionReference, &B), B: Brancher> SolutionCallback<B> for T {
10 fn on_solution_callback(&self, solver: &Solver, solution: SolutionReference, brancher: &B) {
11 (self)(solver, solution, brancher)
12 }
13}
14
15impl<T: SolutionCallback<B>, B: Brancher> SolutionCallback<B> for Option<T> {
16 fn on_solution_callback(&self, solver: &Solver, solution: SolutionReference, brancher: &B) {
17 if let Some(callback) = self {
18 callback.on_solution_callback(solver, solution, brancher)
19 }
20 }
21}