Предположим, у вас есть PAT:
protocol PAT {
associatedtype T
func provide() -> T
}
и другой протокол, который использует этот протокол в качестве ограничения типа:
protocol RegularProtocol {
func consume<P: PAT>(_ pat: P) -> P.T
}
Есть ли способ реализовать этот второй протоколдля определенного ассоциированного типа ПАТ?Например, было бы здорово иметь его, если бы было возможно что-то вроде:
struct Consumer: RegularProtocol /*!*/ where RegularProtocol.T == () /*!*/ {
func consume<P: PAT>(_ pat: P) {
// ...
}
}
Я не нашел способа сделать что-то подобное, и я предполагаю, что необходимо переосмысление архитектуры.Но в любом случае, я что-то пропустил?
Любой совет по поводу таких ситуаций приветствуется!Спасибо!