Concise nil safe way to access field on nested struct?

Hmm, pattern matching comes to mind…

For example, pattern matching via a case statement:

project = %Project{...}

name = case project do
  %{client: %{name: name}} -> name
  _ -> ""
end

# as one liners
name = case project, do: (%{client: %{name: name}} -> name; _ -> "")
name = case project do %{client: %{name: name}} -> name; _ -> "" end

Or alternatively, pattern matching via function heads:

project = %Project{...}
name = get_name(project)

defp get_name(%{client: %{name: name}}, do: name
defp get_name(_project), do: ""