pub fn run_solver<S, C, Spec>(
solution: S,
finalize_fn: fn(&mut S),
constraints_fn: fn() -> C,
descriptor: fn() -> SolutionDescriptor,
entity_count_by_descriptor: fn(&S, usize) -> usize,
terminate: Option<&AtomicBool>,
sender: UnboundedSender<(S, S::Score)>,
spec: Spec,
) -> Swhere
S: PlanningSolution,
S::Score: Score + ParseableScore,
C: ConstraintSet<S, S::Score>,
Spec: ProblemSpec<S, C>,