We don’t need to be that drastic in fact, we can just move the Handle definition higher up in the file. This will work:
defmodule Cycle do
defmodule Handle do
defstruct resource: nil, reference: nil
def wrap_resource(resource) do
%__MODULE__{
resource: resource,
reference: make_ref()
}
end
end
def hello(%Handle{resource: _resource}) do
:world
end
end
Note that the alias is also not needed.
I use this style quite often with my GenServers to define Options and State structs, like this example: lib/geo_therminator/pump_api/device/server.ex · 8fa72cbfa5b0402c46c53e13e5e994bf5a390f89 · Mikko Ahlroth / GeoTherminator · GitLab


















