See https://hexdocs.pm/elixir/Kernel.html, defstruct allows @derive on struct definition or Protocol.derive call if protocol implements deriving/2 callback.
deriving/3 supports options, we could allow specification of what fields to include :only, or exclude, and what struct names to match.
Implementation would follow map but need actual to be same struct.
See https://hexdocs.pm/elixir/Kernel.html, defstruct allows @derive on struct definition or Protocol.derive call if protocol implements deriving/2 callback.
deriving/3 supports options, we could allow specification of what fields to include :only, or exclude, and what struct names to match.
Implementation would follow map but need actual to be same struct.