pub trait Substep { fn new() -> Self; fn after_moves(&self, moves: &[Move]) -> Self; fn solved(&self) -> bool; fn comment() -> &'static str; }