random_constructible/
rand_construct.rs

1// ---------------- [ File: random-constructible/src/rand_construct.rs ]
2crate::ix!();
3
4pub trait RandConstruct {
5    fn random() -> Self;
6    fn uniform() -> Self;
7    fn random_with_rng<R: Rng + ?Sized>(rng: &mut R) -> Self;
8}
9
10impl<E: RandConstructEnum> RandConstruct for E {
11
12    fn random() -> Self {
13        <Self as RandConstructEnum>::random_variant()
14    }
15
16    fn uniform() -> Self {
17        <Self as RandConstructEnum>::uniform_variant()
18    }
19
20    fn random_with_rng<R: Rng + ?Sized>(rng: &mut R) -> Self {
21        <Self as RandConstructEnum>::random_enum_value_with_rng(rng)
22    }
23}