#struct #field

macro struct_field

Derive macros for generating each field in a struct

7 releases

0.1.6 Mar 20, 2022
0.1.5 Mar 7, 2022
0.1.4 Aug 19, 2021

#918 in Rust patterns

Download history 7/week @ 2022-11-22 5/week @ 2022-11-29 15/week @ 2022-12-06 10/week @ 2022-12-13 8/week @ 2022-12-20 5/week @ 2022-12-27 10/week @ 2023-01-03 5/week @ 2023-01-10 14/week @ 2023-01-17 14/week @ 2023-01-24 37/week @ 2023-01-31 40/week @ 2023-02-07 54/week @ 2023-02-14 19/week @ 2023-02-21 4/week @ 2023-02-28

84 downloads per month

MIT license

7KB
124 lines

struct_field

Provides StructField derive macro.

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

generates

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,
        }
    }
}

Usage

Use the StructField derive macro.

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

Use #[struct_field(skip)] to skip fields.

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

Dependencies

~0.6–1MB
~25K SLoC