bauer 0.4.0

A derive macro for automatically generating the builder pattern
Documentation
use bauer::Builder;

#[derive(Debug, Builder, PartialEq)]
#[builder(kind = "borrowed")]
pub struct Foo {
    pub field_a: u32,
    #[builder(default)]
    pub field_b: u32,
    #[builder(default = "42")]
    pub field_c: u32,
    #[builder(default, into)]
    pub field_d: String,
    #[builder(default = "\"hello\"", into)]
    pub field_e: String,
    #[builder(into)]
    pub field_f: String,
    #[builder(repeat)]
    pub field_g: Vec<u32>,
    #[builder(repeat, rename = "field_h_single")]
    pub field_h: Vec<u32>,
    #[builder(repeat, repeat_n = 1..=3)]
    pub field_i: Vec<u32>,
    #[builder(repeat = char)]
    pub field_j: String,
}

fn main() {
    let x = Foo::builder()
        .field_a(5)
        .field_f("world")
        .field_g(0)
        .field_g(1)
        .field_h_single(2)
        .field_h_single(3)
        .field_i(4)
        .field_i(5)
        .field_i(6)
        .field_j('h')
        .field_j('i')
        .build()
        .unwrap();

    dbg!(&x);

    assert_eq!(
        x,
        Foo {
            field_a: 5,
            field_b: 0,
            field_c: 42,
            field_d: String::from(""),
            field_e: String::from("hello"),
            field_f: String::from("world"),
            field_g: vec![0, 1],
            field_h: vec![2, 3],
            field_i: vec![4, 5, 6],
            field_j: String::from("hi"),
        }
    );
}