Вложенные протоколы: неймспейсы без префиксов 🚀

🔥 SE-0404 (Swift 5.10) разрешает объявлять протоколы внутри типов: Bank.Transaction вместо BankTransaction, и домен читается прямо из имени. Вкладывать можно в структуру, класс, энум, актор — и, что менее известно, в необобщённые функции и замыкания, при условии что все конформансы живут в той же функции.

⛔️ Чего нельзя: обобщённый контекст. Ошибка звучит как «protocol 'X' cannot be nested within a generic context», и это касается не только обобщённых типов и функций, но и необобщённой функции внутри обобщённого типа. Вкладывать протокол в протокол тоже нельзя — это отдельное Future Direction.

⚠️ Две вещи для тех, кто пишет библиотеки. Вложенный протокол не витнессит требование associatedtype. И родительский контекст входит в манглинг имени, поэтому перенос протокола внутрь или наружу ломает ABI (исходную совместимость можно прикрыть typealias).

#Swift #APIDesign #SwiftProgramming #iOSDevelopment #CleanCode

Вложенные протоколы: неймспейсы без префиксов 🚀 | Сетка — социальная сеть от hh.ru