Attribute Macro builder

Source
#[builder]
Expand description

Implements the builder pattern for a struct, with optional getter and setter methods.

§Field Attributes

  • #[builder(getter)]: Generates a getter method for the field
  • #[builder(setter)]: Generates a setter method for the field
  • #[builder(getter, setter)]: Generates both getter and setter methods
  • #[builder(default)]: Field uses Default::default() if not provided
  • #[builder(default = "expression")]: Field uses custom default expression
  • #[builder(optional)]: For Option<T> fields, defaults to None

§Example

use service_builder::builder;

#[builder]
struct Service {
    #[builder(getter)]
    name: String,
    #[builder(setter)]
    count: i32,
    #[builder(getter, setter)]
    enabled: bool,
}

let mut service = Service::builder()
    .name("test".to_string())
    .count(42)
    .enabled(true)
    .build()
    .unwrap();

// Use generated getter
assert_eq!(service.get_name(), &"test".to_string());

// Use generated setter
service.set_count(100);
service.set_enabled(false);