lib/fussy/validators/literal.ex
defmodule Fussy.Validators.Literal do
@behaviour Fussy.Validator
defstruct [:literal]
@opaque t :: %__MODULE__{}
@spec new(term()) :: __MODULE__.t()
def new(literal), do: %__MODULE__{literal: literal}
@impl true
def validate(%__MODULE__{literal: literal}, term) when literal == term, do: {:ok, term}
@impl true
def validate(%__MODULE__{literal: literal}, _), do: {:error, ["must be #{inspect(literal)}"]}
end