Associated types are a powerful concept however they come with a fair
share of difficulties. Most notably, as soon as you introduce an
associated type you can't use it like you'd use normal full types.
This article provided several patterns that make it a bit easier to
associated type problems in your codebase. Each of these
patterns has downsides though. In general, if you intend to use
associated types in a
protocol, one of the best solutions is to try
to only use the types that implement this
protocol instead of the
protocol itself. Because then you don't even need those patterns.