From 3174f1dab02537f4156fa2366855a36557a21200 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Mon, 6 Feb 2023 19:29:45 +0100 Subject: [PATCH] Support enumset --- lib/Cargo.toml | 1 + lib/src/lib.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/lib/Cargo.toml b/lib/Cargo.toml index f1b4b10..ddd300b 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -14,6 +14,7 @@ keywords = ["random"] [dependencies] rand = "0.8.5" generate-random-macro = { version = "0.1.0", path = "../derive-macro" } +enumset = { git = "https://github.com/Lymia/enumset", optional = true } [dev-dependencies] rand_chacha = "0.3.1" 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 GenerateRandom for enumset::EnumSet { + fn generate_random(rng: &mut R) -> Self { + let max = enumset::EnumSet::::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, )* ) -- 2.44.0