pub trait HiRE<GC, CS: ControlState, DS: DisplayState> {
fn new(game_config: GC) -> Self;
fn game_config(&self) -> &GC;
fn forward(&mut self, control_state: CS) -> DS;
fn history(&self) -> Vec<CS>;
}
pub trait ControlState {
fn time_secs() -> f64;
}
pub trait DisplayState {
fn finished() -> bool;
}