#struct-fields #field #struct #generate

struct_field

为结构体中的每个字段生成派生宏

7 个版本

0.1.6 2022 年 3 月 20 日
0.1.5 2022 年 3 月 7 日
0.1.4 2021 年 8 月 19 日

79 in #struct-fields

MIT 许可证

7KB
124

struct_field

提供 StructField 派生宏。

#[derive(StructField)]
struct SomeStruct {
    field_one: i32,
    field_two: Vec<bool>,
}

生成

enum SomeStructField {
    field_one(i32),
    field_two(Vec<bool>),
}
impl SomeStruct {
    pub fn update_field(&mut self, field: SomeStructField) {
        match field {
            SomeStructField::field_one(field_one) => self.field_one = field_one,
            SomeStructField::field_two(field_two) => self.field_two = field_two,
        }
    }
}

用法

使用 struct_field 派生宏。

#[derive(StructField)]
struct SomeStruct {
    field_one: i32,
    field_two: Vec<bool>,
}

使用 #[struct_field(skip)] 跳过字段。

#[derive(StructField)]
struct SomeStruct {
	field_one: i32,
	#[struct_field(skip)]
	field_two: Vec<bool>,
}

依赖关系

~1.5MB
~35K SLoC