pub trait CustomSubstep {
fn after_moves(&self, moves: &[Move]) -> Box<dyn CustomSubstep>;
fn apply_moves(&mut self, moves: &[Move]);
fn solved(&self) -> bool;
fn comment(&self) -> &'static str;
}
pub trait CustomSubstep {
fn after_moves(&self, moves: &[Move]) -> Box<dyn CustomSubstep>;
fn apply_moves(&mut self, moves: &[Move]);
fn solved(&self) -> bool;
fn comment(&self) -> &'static str;
}