Someone didn't understand why they couldn't rejoin a game. Maybe this will help
pub type GearId = u16;
pub trait GearData {}
pub trait GearDataProcessor<T: GearData> {
fn add(&mut self, gear_id: GearId, gear_data: T);
}
pub trait GearDataAggregator<T: GearData> {
fn find_processor(&mut self) -> &mut GearDataProcessor<T>;
}