pub trait SolverTrait {
type P: Problem;
// Required method
fn run<'a>(&self, problem: &'a Self::P) -> Result<Solution<'a>, String>;
}pub trait SolverTrait {
type P: Problem;
// Required method
fn run<'a>(&self, problem: &'a Self::P) -> Result<Solution<'a>, String>;
}