lib/cast_behaviour.ex
defmodule DataSchema.CastBehaviour do
@moduledoc """
The casting function can either be a 1 arity function or a module that has a cast/1
function implemented. This behaviour is to help ensure that cast/1 function looks the
way DataSchema expects.
"""
@doc """
A doc should return an okay tuple with the casted value or an error tuple. For errors
you can optionally provide a message that will be returned if `DataSchema.to_struct/2`
fails.
"""
@callback cast(any()) :: {:ok, term()} | :error | {:error, term()}
end