У меня есть два протокола (Archivable и Serializable) и класс (Model), который несколько раз подклассифицирован. Многие подклассы реализуют либо Archivable, либо Serializable (или оба). Я хотел бы определить функцию для всех дочерних элементов Model, которые реализуют как Archivable, так и Serializable. Обе эти работы:
extension Serializable where Self: Model {
func fetch() { ... }
}
или
extension Serializable where Self: Archivable {
func fetch() { ... }
}
Однако я не могу понять, как расширить, где требуются оба протокола. Есть ли другие возможности, кроме создания третьего протокола, который соответствует первым двум?