You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
652 B
24 lines
652 B
//! A simple example of deriving the `Arbitrary` trait for an `enum`.
|
|
//!
|
|
//! Note that this requires enabling the "derive" cargo feature.
|
|
|
|
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);
|
|
}
|