lib/types/any_type.ex

defmodule Talos.Types.AnyType do
  @moduledoc """
  Any type is used to show that data doesn't have a constant type

  For example:
  ```elixir
    iex> import Talos, only: [any: 1]
    iex> could_be_any_type = any()
    iex> Talos.valid?(could_be_any_type, 2 == 2)
    true
    iex> Talos.valid?(could_be_any_type, nil)
    true
    iex> Talos.valid?(could_be_any_type, "123")
    true
  ```
  """

  @behaviour Talos.Types
  # Type must be struct, even empty
  defstruct []

  @type t :: %{
          __struct__: any
        }

  @spec valid?(struct | module, any) :: true
  def valid?(_, _), do: true

  @spec errors(struct | module, any) :: []
  def errors(_, _), do: []
end