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