]> git.lizzy.rs Git - generate-random.git/blobdiff - lib/src/lib.rs
Add trait to generate random enum with fixed variant
[generate-random.git] / lib / src / lib.rs
index 4995eb69103bb630194eb6e395a2ade1b0e750bd..b25f91e81ee8ab41ab8720bd45ee2db779b82d49 100644 (file)
@@ -41,6 +41,22 @@ pub trait GenerateRandom {
     fn generate_random<R: rand::Rng + ?Sized>(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<R: rand::Rng + ?Sized>(rng: &mut R, variant: usize) -> Self;
+}
+
 macro_rules! impl_generate_random {
        ( $( $t:ty, )+ ) => {
                $(