defmodule AStar do @moduledoc """ TODO: Documentation for `AStar`. """ mix_config = Mix.Project.config() version = mix_config[:version] github_url = mix_config[:package][:links]["GitHub"] # Since Rustler 0.27.0, we need to change manually the mode for each env. # We want "debug" in dev and test because it's faster to compile. mode = if Mix.env() in [:dev, :test], do: :debug, else: :release use RustlerPrecompiled, otp_app: :astar, crate: "astar", version: version, base_url: "#{github_url}/releases/download/v#{version}", mode: mode, force_build: System.get_env("ASTAR_BUILD") in ["1", "true"] ## Types @type coord :: {non_neg_integer(), non_neg_integer()} ## Public API # AStar.path(<<0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0>>,5,5,{0,0},{4,4}) @spec path(binary(), pos_integer(), pos_integer(), coord(), coord()) :: {:ok, [coord()]} | {:error, atom()} def path(_map, _width, _height, _start, _end), do: err() # Helpers defp err(), do: :erlang.nif_error(:nif_not_loaded) end