Crate smile_marco

Crate smile_marco 

Source
Expand description

§smile-marco provides macros such as Getter, Setter, Wither, Builder, etc

These macros generate methods such as get, set, with, and builder for properties within a struct, providing quick access and manipulation. Convenient for daily development.

[dependencies]
smile-marco = { version = "1.0.0", features = ["full"] }
#or
smile-marco = { version = "1.0.0"}

If needed, use partial macros.

[dependencies]
smile-marco = { version = "1.0.0", features = ["getter","setter"] }

§Example

use smile_marco::{Builder, Getter, Setter, Wither};

#[derive(Builder, Getter, Setter, Wither)]
struct Book {
    title: String,
    #[name(cost)] // rename
    price: i32,
    #[exclude] // Do not generate set methods for author
    author: String,
}


let mut book = Book::builder()
.title("Rust Programming".to_string())
.price(100)
.author("rust".to_string())
.build();
assert_eq!(book.title, "Rust Programming".to_string());
book.set_title("Rust Book".into());
assert_eq!(book.title, "Rust Book".to_string());
assert_eq!(book.get_cost(), &100);
let mut book = book.with_cost(|c| c + 100);
assert_eq!(book.price, 200);

Attribute Macros§

data
data macro

Derive Macros§

Builder
Builder macro
Getter
The Getter macro is used to quickly generate the get method
Setter
Setter macros are used to quickly generate set methods
Wither
Wither macros are used to quickly generate with methods