pub trait ImpartialGame { type State; type Iter: Iterator<Item = Self::State>; // Required method fn next_state(&mut self, s: &Self::State) -> Self::Iter; }