Dicebag
This library contains various "dice rolling" functions and traits.
In most cases, anything from i8/u8 up to i128/u128
and usize is supported (alongside f32/f64 for a few
functions).
dicebag::DiceExt
Covers the core intent dice rollings, e.g. 3.d6(), 2.d10().
use DiceExt;
let a = 3.d6;
let b = 2_u8.d4;
let c = 5.d; // FYI: zero as dice size results in 0...
dicebag::HiLo
Coin flipping, using whatever datatype you implement it for… Comes with two convenience macros so that you don't need to write those yourself:
use ;
if lo!
if hi!
dicebag::InclusiveRandomRange
To get a random value within given range.
use InclusiveRandomRange;
let range = 6..=12;
let v = range.random_of;
dicebag::RandomOf<T>
A trait to get some random entry of e.g. Vec or HashSet.
Just make sure your container has at least one entry in it as otherwise
things will catch fire (panic). .random_of() really can't choose
a random element out of nothing given…
use RandomOf;
let v = vec!;
let x: i32 = v.random_of;
;
let abc = vec!;
let x = abc.random_of;
assert!;