~Sendable: сказать «не Sendable» осознанно 👾

🔥 SE-0518 (Swift 6.4) добавляет ~Sendable: подавляет выведенный Sendable и помечает тип как намеренно не отправляемый. Не «так вышло», а решение, зафиксированное в коде.

⚠️ Писать можно только на объявлении. extension Test: ~Sendable {} — ошибка. На протоколах (protocol P: ~Sendable) и на параметрах дженериков (<T: ~Sendable>) тоже нельзя.

💡 А вот чем это реально лучше старого трюка с @available(*, unavailable) extension T: Sendable: ~Sendable не наследуется подклассами. То есть sendable-подкласс не-sendable базового класса остаётся выразимым, чего трюк с недоступным конформансом не позволял.

#Swift #SwiftLang #SwiftConcurrency #iOSDev #Swift64

~Sendable: сказать «не Sendable» осознанно 👾 | Сетка — социальная сеть от hh.ru