impl_complete_builder

Macro impl_complete_builder 

Source
macro_rules! impl_complete_builder {
    (
        builder: $builder:ident,
        config_field: $config_field:ident,
        simple_setters: {
            $($simple_field:ident: $simple_type:ty => $simple_doc:literal),* $(,)?
        }
    ) => { ... };
    (
        builder: $builder:ident,
        config_field: $config_field:ident,
        nested_setters: {
            $($nested_path:ident: $nested_type:ty => {
                $($nested_field:ident: $nested_field_type:ty => $nested_doc:literal),* $(,)?
            }),* $(,)?
        }
    ) => { ... };
    (
        builder: $builder:ident,
        config_field: $config_field:ident,
        enable_methods: {
            $($enable_method:ident => $enable_field:ident: $enable_type:ty => $enable_doc:literal),* $(,)?
        }
    ) => { ... };
}
Expand description

Comprehensive builder macro for generating common builder method patterns.

This macro generates multiple types of builder methods to reduce code duplication:

  1. Simple setters for direct field assignment
  2. Nested config setters using the with_nested! macro
  3. Enable/disable methods for optional features
  4. Dynamic batching configuration methods

§Usage

impl_complete_builder! {
    builder: MyBuilder,
    config_field: config,

    // Simple setters
    simple_setters: {
        field_name: FieldType => "Documentation for the setter",
    },

    // Nested config setters
    nested_setters: {
        config_path: ConfigType => {
            field_name: FieldType => "Documentation",
        },
    },

    // Enable/disable methods
    enable_methods: {
        method_name => config_field: DefaultType => "Documentation",
    },
}