From c966137cc4b64855f109f7b0eae3327d198b1f1d Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Fri, 10 Feb 2023 14:37:14 +0100 Subject: Add trait to generate random enum with fixed variant --- lib/src/lib.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'lib/src/lib.rs') diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 4995eb6..b25f91e 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -41,6 +41,22 @@ pub trait GenerateRandom { fn generate_random(rng: &mut R) -> Self; } +/// Enable randomly generating values of an enum +/// with a predefined variant +/// +/// This trait is automatically implemented for enums +/// by the [`macro@GenerateRandom`] macro +pub trait GenerateRandomVariant { + /// Return number of variants + fn num_variants() -> usize; + + /// Return name of variant with index + fn variant_name(variant: usize) -> &'static str; + + /// Create a randomly generated value with a predefied variant + fn generate_random_variant(rng: &mut R, variant: usize) -> Self; +} + macro_rules! impl_generate_random { ( $( $t:ty, )+ ) => { $( -- cgit v1.2.3