Derive Macros

The EncodeAsType derive macro can be used to implement EncodeAsType on structs and enums whose fields all implement EncodeAsType.