The current approach is inflexible with poor readability. Some structs simply won't work because the syntax doesn't match the macro. Also there is no way to specify default or derived values with the existing macro syntax. An attribute-style procedural macro should make this all possible while making the code more readable.