pub fn one_of_vec_once<T>(values: Vec<T>) -> impl DieOnce<T>
Expand description

Generates a element randomly chosen from the given Vec. All elements have the same probability.

Examples

use dicetest::prelude::*;
use dicetest::{Prng, Limit};

let mut prng = Prng::from_seed(0x5EED.into());
let limit = Limit::default();
let mut fate = Fate::new(&mut prng, limit);

#[derive(Debug, PartialEq, Eq)]
struct CannotBeCloned(u8);
let zero_and_one = vec![CannotBeCloned(0), CannotBeCloned(1)];
let zero_or_one = fate.roll(dice::one_of_vec_once(zero_and_one));
assert!(zero_or_one == CannotBeCloned(0) || zero_or_one == CannotBeCloned(1));