#proc-macro #getter-setter #struct-fields #procedural #methods #constructor #boilerplate

getset-macro

一个过程宏,简化了为Rust结构体字段创建getter、setter和构造函数方法的过程

2个稳定版本

1.0.1 2023年9月18日
1.0.0 2023年9月16日

过程宏 中排名第1397

MIT许可

6KB

GetSet过程宏

GetSet过程宏简化了为Rust结构体字段创建getter和setter方法的过程。使用此宏,您可以自动生成这些方法,减少样板代码并提高代码可读性。

目录

用法

要使用GetSet过程宏,请按照以下步骤操作

  1. GetSetcrate添加到您的Cargo.toml

    [dependencies]
    getset-macro = "0.1"
    
  2. 将GetSet过程宏导入您的Rust代码

    use getset_macro::GetSet;
    
  3. 将#[derive(GetSet)]属性应用于您的结构体。这将自动为结构体的所有字段生成构造函数、getter和setter方法。

    #[derive(GetSet)]
        struct MyStruct {
            field1: FieldType1,
            field2: FieldType2,
            // ... more fields
        }
    
  4. 如下使用生成的构造函数、getter和setter方法

        let mut instance = MyStruct {
                field1: initial_value1,
                field2: initial_value2,
                };
    
        // Or Using derived constructor
        let mut new_instance = MyStruct::new(field1, field2);
    
        // Get the value of field1
        let value1 = instance.get_field1();
    
        // Set the value of field2
        instance.set_field2(new_value2);
    
    
    

示例

以下是如何使用GetSet过程宏的示例

use getset_macro::GetSet;

#[derive(GetSet)]
struct Person {
    name: String,
    age: u32,
}

fn main() {
    // Using constructor API
    let mut person = Person::new("Alice".to_string(), 30);

    // Get the name and age
    let name = person.get_name();
    let age = person.get_age();

    // Modify the age
    person.set_age(25);
}

在此示例中,GetSet宏为Person结构体的字段生成了new()、get_name()、get_age()、set_name()和set_age()方法。

工作原理 GetSet宏负责以下任务

它为结构体中的所有字段生成getter方法(get_fieldname())。它为结构体中的所有字段生成setter方法(set_fieldname(value))。生成的getter方法返回字段值的引用。生成的setter方法允许您设置字段的值。宏分析结构体的字段并自动生成这些方法的代码,从而减少手动代码编写。

依赖关系

~310–770KB
~18K SLoC