Trait Random
random
pub trait Random: Sized { fn random<G: RandomGen>(g: &mut G) -> Self; }
fn random<G: RandomGen>(g: &mut G) -> Self