simple-builder 0.0.2

A procedural macro for creating a builder-pattern struct for any struct.
Documentation
# simple-builder
A simple implementation of the builder pattern for arbitrary Rust structs.

![badge](https://github.com/Brendan-Blanchard/simple-builder/actions/workflows/main.yml/badge.svg) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

This package could easily be called "yet-another-builder" (YAB for short), but it fills a niche for those looking less
for features in a builder implementation, and more for ease of use. __In particular this implementation is for you if 
you have structs with several required fields and many optional ones.__ Examples of this might be query parameters for 
endpoints with required fields like a nonce and id, then many optional filtering parameters like start and end dates, 
price ranges, product types, etc. This macro was purpose built for this very use case.

# Example: Simple Use Case
```rust
use simple_builder_macro::Builder;

// Debug, PartialEq, Eq are only for assertions
#[derive(Debug, PartialEq, Eq, Builder)]
struct Breakfast {
    #[builder(required)]
    pub coffee: i64, // coffee is required, and therefore not Option<T>
    pub toast: Option<i64>,
    pub eggs: Option<i64>,
    pub bacon: Option<i64>,
}

pub fn main() {
    let desired_breakfast = Breakfast {
        coffee: 1,
        toast: None,
        eggs: Some(3),
        bacon: Some(2),
    };
    
    // semantically equivalent to `Breakfast::builder(16)`
    let mut builder = BreakfastBuilder::new(16);
    let breakfast = builder.eggs(3).bacon(2).build();
    
    assert_eq!(desired_breakfast, breakfast);
}
```