#[generate_builder]Expand description
Generate Builder struct, implementation for Builder struct, Builder trait implementation for Builder struct from provided struct
- Generated Builder name will be
XXXBuilder. - use
with_xxxmethod to set value. - use build method to get
Option<provided struct>. #[generate_builder(Traits)]Traits will be derived to Builder struct by#[derive(Traits)]- if there is data has not been set, build method returns
None - generated struct field will be
provided_field_name: Option<provided_field_type>
§Examples
use patternize::builder::generate_builder;
#[derive(Debug, PartialEq)] // for assert_eq!
#[generate_builder(Clone)]
struct Example {
data1: usize,
data2: isize
}
fn main() {
let example_builder: ExampleBuilder = ExampleBuilder::new()
.with_data1(0);
assert_eq!(example_builder.clone().build(), None);
let example: Option<Example> = example_builder.with_data2(-1).build();
assert_eq!(example, Some(Example { data1: 0, data2: -1 }));
}§Generation Image
ⓘ
#[generate_builder(Debug, Clone)]
struct Example {
data: T
...
}
// after generate
#[derive(Debug, Clone)]
struct ExampleBuilder {
data: Option<T>
...
}
impl ExampleBuilder {
fn new() -> Self;
fn build(self) -> Example;
fn with_data(self, T) -> Self;
...
}
impl patternize::builder::Builder for ExampleBuilder;