lib/fuzler.ex

defmodule Fuzler do
  # use Rustler, otp_app: :fuzler, crate: "fuzler"

  version = Mix.Project.config()[:version]

  use RustlerPrecompiled,
    otp_app: :fuzler,
    crate: "fuzler",
    base_url: "https://github.com/elchemista/fuzler/releases/download/v#{version}",
    force_build: System.get_env("RUSTLER_PRECOMPILATION_EXAMPLE_BUILD") in ["1", "true"],
    version: version

  @doc """
  Returns a similarity score between `query` and `target`.
  """

  @spec similarity_score(String.t(), String.t()) :: float()
  def similarity_score(query, target) when is_binary(query) and is_binary(target),
    do: nif_similarity_score(query, target)

  # NIF
  @spec nif_similarity_score(String.t(), String.t()) :: float()
  defp nif_similarity_score(_q, _t), do: :erlang.nif_error(:nif_not_loaded)
end