#[derive(EnumUpdate)]
{
// Attributes available to this derive:
#[variant_group]
#[skip_default]
#[rename_default]
#[enum_update]
}
Expand description
Generates an enum representing updates to a given struct. See the README.md for an overview.
The EnumUpdate
macro works by creating a list of “variant groups”
with each group representing a modification to the state struct. By
default, a variant group is constructed for each struct member.
An enum variant is generated for each variant group containing all
changes for fields in that group.
§Available attributes:
§variant_group
Specifies that a field should belong to an extra group.
ⓘ
#[derive(EnumUpdate)]
pub struct TimeSeriesData {
#[variant_group(RecordOne)]
time: u32,
#[variant_group(RecordOne)]
value_one: u32,
value_two: u32
}
will generate
pub enum TimeSeriesDataUpdate {
Time(u32),
ValueOne(u32),
ValueTwo(u32),
RecordOne(u32, u32), // <- represents multiple changes
}
§skip_default
Specifies that a default variant group should not be generated for a field.
ⓘ
#[derive(EnumUpdate)]
pub struct TimeSeriesData {
time: u32,
value_one: u32,
#[skip_default]
cached_data
}
will generate
pub enum TimeSeriesDataUpdate {
Time(u32),
ValueOne(u32)
}
§rename_default
Renames the default variant group generated for a field.
ⓘ
#[derive(EnumUpdate)]
pub struct TimeSeriesData {
time: u32,
value_one: u32,
#[rename_default(new_name)]
original_name: u32
}
will generate
pub enum TimeSeriesDataUpdate {
Time(u32),
ValueOne(u32),
NewName(u32), // <-- corresponds to original_name
}
§enum_update
Passes on any provided attributes to the generated enum.
ⓘ
#[derive(EnumUpdate)]
#[enum_update(derive(Debug))]
pub struct State {
value: u32
}
will generate
#[derive(Debug)]
pub enum StateUpdate {
Value(u32)
}