#accessor #mutator #constructor #updater #meta-programming

purpurea

基于属性的访问器/更新器/修改器/构造函数生成

1 个不稳定版本

0.1.0 2021年4月2日

#17 in #mutator

MIT 许可证

21KB
184 代码行

purpurea

此包提供基于属性的便利方法生成(访问器/更新器/修改器/构造函数)用于具有私有字段的 struct。该包的属性宏实现的观察结果与 Java 库 Lombok@Getter/@Setter@RequiredArgsConstructor/@AllArgsConstructor 注解的结果有些相似,带有 Rust 风格。

示例

mod examples {
    use purpurea::*;
    
    #[accessors(email)]
    #[updaters(email)]
    #[default_constructor]
    pub struct User {
        email: String,
        account_number: usize
    }
}
     
use examples::*;

let john_doe = User::new("[email protected]", 45275);
let new_email = "[email protected]";
let john_doe2 = john_doe.with_email(new_email.to_owned());

assert_eq!(new_email, john_doe2.email());

lib.rs:

此包提供基于属性的便利方法生成(访问器/更新器/修改器/构造函数)用于具有私有字段的 struct。

该包的属性宏实现的观察结果与 Java 库 Lombok@Getter/@Setter@RequiredArgsConstructor/@AllArgsConstructor 注解的结果有些相似,带有 Rust 风格。

示例

mod examples {
    use purpurea::*;
    
    #[accessors(email)]
    #[updaters(email)]
    #[default_constructor]
    pub struct User {
        email: String,
        account_number: usize
    }
}
    
use examples::*;

let john_doe = User::new("[email protected]", 45275);
let new_email = "[email protected]";
let john_doe2 = john_doe.with_email(new_email.to_owned());

assert_eq!(new_email, john_doe2.email());

依赖

~1.5MB
~35K SLoC