behaves_like v0.3.0 BehavesLike View Source

Turns a module’s specs into callbacks.

Lets you state that a module behaves like another, without writing behaviour callbacks.

For example:

  defmodule API do
    use BehavesLike

    @spec get(binary()) :: {:ok, any()} | {:error, any()}
    def get(id) do
      Backend.get(id)
    end
  end

  defmodule Backend do
    @behaviour API

    @impl true
    def get(id) do
      database().get(id)
    end
  end