#[derive(DefaultGenerator)]Expand description
Derive a generator for a struct or enum.
This implements DefaultGenerator for the type,
allowing it to be used with default via default::<T>().
For structs, the generated generator has:
<field>(generator)- builder method to customize each field’s generator
For enums, the generated generator has:
default_<VariantName>()- methods returning default variant generators<VariantName>(generator)- builder methods to customize variant generation
§Struct Example
ⓘ
use hegel::DefaultGenerator;
use hegel::generators::{self as gs, DefaultGenerator as _, Generator as _};
#[derive(DefaultGenerator)]
struct Person {
name: String,
age: u32,
}
#[hegel::test]
fn generates_people(tc: hegel::TestCase) {
let generator = gs::default::<Person>()
.age(gs::integers::<u32>().min_value(0).max_value(120));
let person: Person = tc.draw(generator);
}§Enum Example
ⓘ
use hegel::DefaultGenerator;
use hegel::generators::{self as gs, DefaultGenerator as _, Generator as _};
#[derive(DefaultGenerator)]
enum Status {
Pending,
Active { since: String },
Error { code: i32, message: String },
}
#[hegel::test]
fn generates_statuses(tc: hegel::TestCase) {
let generator = gs::default::<Status>()
.active(|g| g.since(gs::text().max_size(20)));
let status: Status = tc.draw(generator);
}