builder-pattern 0.4.2

A derivable macro for declaring a builder pattern.
Documentation
use builder_pattern::Builder;

#[derive(Builder, Debug, PartialEq)]
struct Test {
    #[setter(async, value)]
    pub a: i32,
    #[default(5)]
    #[setter(async)]
    pub b: i32,
}

async fn value() -> i32 {
    10
}

#[tokio::main]
async fn main() {
    let t1 = Test::new().a(3).build();
    println!("{:?}", t1);
    assert_eq!(t1, Test { a: 3, b: 5 });

    let t2 = Test::new().a_async(|| async { 4 }).build().await;
    println!("{:?}", t2);
    assert_eq!(t2, Test { a: 4, b: 5 });

    let t3 = Test::new()
        .a_async(|| async { 4 })
        .b_async(value)
        .build()
        .await;
    println!("{:?}", t3);
    assert_eq!(t3, Test { a: 4, b: 10 });
}