Structs

Custom errors for this crate. Keeps a record of the enum and requested type that produced the error

Traits

This is a helper trait for implementing the TryTo and std::convert::TryFrom traits on enums. Is uses marker structs to uniquely identify a type in the enum. This avoids relying on std::any::TypeId which is limited to types that are 'static.
Not all enums can have the std::convert::TryFrom trait derived on them because of rules around implementing foreign traits on foreign types.