use std::fmt::Debug;
use solverforge_core::domain::PlanningSolution;
use solverforge_scoring::Director;
use crate::scope::ProgressCallback;
use crate::scope::SolverScope;
pub trait Phase<S: PlanningSolution, D: Director<S>, BestCb: ProgressCallback<S> = ()>:
Send + Debug
{
fn solve(&mut self, solver_scope: &mut SolverScope<'_, S, D, BestCb>);
fn phase_type_name(&self) -> &'static str;
}
impl<S: PlanningSolution, D: Director<S>, BestCb: ProgressCallback<S>> Phase<S, D, BestCb> for () {
fn solve(&mut self, _solver_scope: &mut SolverScope<'_, S, D, BestCb>) {
}
fn phase_type_name(&self) -> &'static str {
"NoOp"
}
}