Raised by Rupa.encode!/3 when a value does not match the schema it is being encoded against.
Its own exception rather than a shared one, because the two failures mean different things: a decode error is the outside world being wrong, and an encode error is your own code being wrong about a value it built.
Summary
Types
@type t() :: %Rupa.EncodeError{__exception__: term(), errors: [Rupa.Error.t()]}