pub trait Gen { type Output; // Required method fn generate<R>(&self, rng: &mut R) -> Self::Output where R: Rng; }