4 releases
0.2.0 | Feb 11, 2024 |
---|---|
0.1.2 | Mar 20, 2023 |
0.1.1 | Mar 6, 2022 |
0.1.0 | Feb 6, 2022 |
#69 in No standard library
1,724 downloads per month
Used in 3 crates
(2 directly)
11KB
106 lines
staged-builder
A proc macro which generates staged builders for types.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
lib.rs
:
A procedural macro which creates a "staged" builder for a type.
Staged (also known as telescopic) builders are a style of infallible builders; code will not compile if any required
fields are not set. Specifically, the builder advances in order through a sequence of "stage" types, each
corresponding to a required field of the struct. The final stage has setters for all optional fields and the final
.build()
method.
See the documentation for #[staged_builder]
for more details.
Examples
use staged_builder::staged_builder;
#[staged_builder]
struct Person {
#[builder(into)]
name: String,
age: u32,
#[builder(list(item(type = Person)))]
parents: Vec<Person>,
}
let person = Person::builder()
.name("John Doe")
.age(25)
.build();
Dependencies
~0.4–0.8MB
~19K SLoC