solverforge_solver/termination/
mod.rs1mod best_score;
4mod composite;
5mod diminished_returns;
6mod move_count;
7mod score_calculation_count;
8mod step_count;
9mod time;
10mod unimproved;
11
12use std::fmt::Debug;
13
14use solverforge_core::domain::PlanningSolution;
15
16use crate::scope::SolverScope;
17
18pub use best_score::{BestScoreFeasibleTermination, BestScoreTermination};
19pub use composite::{AndCompositeTermination, OrCompositeTermination};
20pub use diminished_returns::DiminishedReturnsTermination;
21pub use move_count::MoveCountTermination;
22pub use score_calculation_count::ScoreCalculationCountTermination;
23pub use step_count::StepCountTermination;
24pub use time::TimeTermination;
25pub use unimproved::{UnimprovedStepCountTermination, UnimprovedTimeTermination};
26
27pub trait Termination<S: PlanningSolution>: Send + Debug {
29 fn is_terminated(&self, solver_scope: &SolverScope<S>) -> bool;
31}
32
33#[cfg(test)]
34mod tests;