defmodule Gremlex.Request.Id do @moduledoc """ UUID generation vendored from `Ecto.UUID` """ @doc """ Generates a unique request id """ @spec generate() :: String.t() def generate, do: encode(bingenerate()) defp bingenerate do <> = :crypto.strong_rand_bytes(16) <> end defp encode( <> ) do <> end @compile {:inline, e: 1} defp e(0), do: ?0 defp e(1), do: ?1 defp e(2), do: ?2 defp e(3), do: ?3 defp e(4), do: ?4 defp e(5), do: ?5 defp e(6), do: ?6 defp e(7), do: ?7 defp e(8), do: ?8 defp e(9), do: ?9 defp e(10), do: ?a defp e(11), do: ?b defp e(12), do: ?c defp e(13), do: ?d defp e(14), do: ?e defp e(15), do: ?f end