//! A simple example of deriving the `Arbitrary` trait for an `enum`.
//!
//! Note that this requires enabling the "derive" cargo feature.

// Various enums/fields that we are deriving `Arbitrary` for aren't actually
// used except to show off the derive.
#![allow(dead_code)]

use arbitrary::{Arbitrary, Unstructured};

#[derive(Arbitrary, Debug)]
enum MyEnum {
    UnitVariant,
    TupleVariant(bool, u32),
    StructVariant { x: i8, y: (u8, i32) },
}

fn main() {
    let raw = b"This is some raw, unstructured data!";

    let mut unstructured = Unstructured::new(raw);

    let instance = MyEnum::arbitrary(&mut unstructured)
        .expect("`unstructured` has enough underlying data to create all variants of `MyEnum`");

    println!("Here is an arbitrary enum: {:?}", instance);
}
