What you’re describing is a multi-parameter type class: Multi-parameter type class - HaskellWiki. This has also been discussed in the forums before, sometimes referred to as “generic protocols”. The general consensus seemed to be that this is not a good direction for Swift, though.
I suspect you can get most of the way there with associated types, recursive conformances, and same type requirements.