Smelter is an extremely lightweight rust proc_macro library to derive "Builder" methods for arbitrary rust structs.
toml
[dependencies]
smelter = "*"
Add the following to the file in which you with to use smelter.
```
extern crate smelter; ```
Then just add #[derive(Builder)]
above your struct,
Smelter | Generated Code |
#![feature(proc_macro, custom_attribute)]
#[macro_use]
extern crate smelter;
#[derive(PartialEq, Builder, Default, Debug, Clone)]
#[smelter(prefix="with_")]
pub struct User {
pub uid: u64,
pub email: String,
pub alias: String,
pub friends: Vec
|
# [ allow ( dead_code ) ]
impl User {
pub fn with_uid(self, __value: u64) -> User {
User { uid: __value, ..self }
}
pub fn with_email(self, __value: String) -> User {
User { email: __value, ..self }
}
pub fn with_alias(self, __value: String) -> User {
User { alias: __value, ..self }
}
pub fn with_friends(self, __value: Vec
|
```rust // ... somewhere in your code let mut u1 = User::default(); // ... u1.withemailmut("cardboardbox@example.com".tostring()) .withaliasmut("Cardboard box".tostring()) .withuidmut(10u64);
// ... somewhere else let u2 = User::default() .withemail("filecabinate@example.com".tostring()) .withalias("File Cabinate".tostring()) .with_uid(10u64); ```
For more examples see the test.rs