pub trait Random<T, R: Rng> {
// Required method
fn choose(&self, rng: &mut R, amount: usize) -> Vec<T>;
// Provided method
fn gen(&self, rng: &mut R) -> T { ... }
}
pub trait Random<T, R: Rng> {
// Required method
fn choose(&self, rng: &mut R, amount: usize) -> Vec<T>;
// Provided method
fn gen(&self, rng: &mut R) -> T { ... }
}