Tuesday, December 21, 2021

Elixir: map to struct

Courtesy of Jose Valim: (https://groups.google.com/forum/#!msg/elixir-lang-talk/6geXOLUeIpI/L9einu4EEAAJ).
  def to_struct(kind, attrs) do
    struct = struct(kind)

    Logger.debug("attrs = #{inspect(attrs)}")

    Enum.reduce(Map.to_list(struct), struct, fn {k, _}, acc ->
      case Map.fetch(attrs, k) do
        {:ok, v} -> %{acc | k => v}
        :error -> acc
      end
    end)
  end