|  4be8e497ca # Objective
Allow `SystemParamBuilder` implementations for custom system parameters
created using `#[derive(SystemParam)]`.
## Solution
Extend the derive macro to accept a `#[system_param(builder)]`
attribute. When present, emit a builder type with a field corresponding
to each field of the param.
## Example
```rust
#[derive(SystemParam)]
#[system_param(builder)]
struct CustomParam<'w, 's> {
    query: Query<'w, 's, ()>,
    local: Local<'s, usize>,
}
let system = (CustomParamBuilder {
    local: LocalBuilder(100),
    query: QueryParamBuilder::new(|builder| {
        builder.with::<A>();
    }),
},)
    .build_state(&mut world)
    .build_system(|param: CustomParam| *param.local + param.query.iter().count());
``` | ||
|---|---|---|
| .. | ||
| commands | ||
| adapter_system.rs | ||
| builder.rs | ||
| combinator.rs | ||
| exclusive_function_system.rs | ||
| exclusive_system_param.rs | ||
| function_system.rs | ||
| mod.rs | ||
| observer_system.rs | ||
| query.rs | ||
| system_name.rs | ||
| system_param.rs | ||
| system_registry.rs | ||
| system.rs | ||