aboutsummaryrefslogtreecommitdiff
path: root/lib/src/lib.rs
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-06 19:29:45 +0100
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-06 19:29:45 +0100
commit3174f1dab02537f4156fa2366855a36557a21200 (patch)
tree1d5f441d3883b5183b33be941759747abb0384dd /lib/src/lib.rs
parent2cc2a5b3b1823df7d3005e7683c4b4fb04559037 (diff)
downloadgenerate-random-3174f1dab02537f4156fa2366855a36557a21200.tar.xz
Support enumset
Diffstat (limited to 'lib/src/lib.rs')
-rw-r--r--lib/src/lib.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/src/lib.rs b/lib/src/lib.rs
index d0e96e3..f68b9f7 100644
--- a/lib/src/lib.rs
+++ b/lib/src/lib.rs
@@ -128,6 +128,16 @@ where
}
}
+#[cfg(feature = "enumset")]
+impl<T: enumset::EnumSetType + GenerateRandom> GenerateRandom for enumset::EnumSet<T> {
+ fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
+ let max = enumset::EnumSet::<T>::variant_count() * 2;
+ let len = rng.gen_range(0..max);
+
+ (0..len).map(|_| T::generate_random(rng)).collect()
+ }
+}
+
macro_rules! impl_generate_random_tuple {
( $t0:ident $( $t:ident )* ) => {
impl< $t0, $( $t, )* > GenerateRandom for ( $t0, $( $t, )* )