impl_struct_data

Macro impl_struct_data 

Source
macro_rules! impl_struct_data {
    ($name:ident = $value:expr $(, $from:literal => $to:literal)* $(,)?) => { ... };
}
Expand description

A macro for implementing data-like (states, payload) for a struct with a name field.

Usage is impl_struct_data! { StructName = default value, "from" => "to", ... } to implement all the boilerplate for a struct named StructName, providing it with a default value and displaying it using the results of Debug patched by replacing each of the (optional) "from" string(s) with its matching "to" string.

The struct type needs to #[derive(PartialEq, Eq, Hash, Copy, Clone, Debug)]. It needs to have a name field which is a simple enum using The struct type needs to #[derive(PartialEq, Eq, Hash, Copy, Clone, Debug, strum::IntoStaticStr)], which is used as the short name for the state (e.g. in condensed diagrams). Additional fields would be used to carry detailed state data.