Abstracts over an individual serializer / deserializer, a.k.a., a "codec". A codec typically provides a serializer, deserializer, and metadata for each serializable type; however, for various reasons, the Codec typeclass itself only captures the associated types that are involved in serializing and deserializing.
Associated types
type family MonadEncode codec :: Type -> TypeThe Monad in which encoding can happen.
type family MonadDecode codec :: Type -> TypeThe Monad in which decoding can happen.
type family DefEnumEncoding codecUnless explicitly declared otherwise, enum fields will be encoded as this type.