Ref и MutableRef: ссылки без указателей 🎯

🔥 SE-0519 (Swift 6.4) вводит Ref и MutableRef — доступ к значению как полноценную величину, которую можно хранить и передавать. Без классовой коробки и без UnsafePointer. MutableRef(&profile.streak) берёт эксклюзивный доступ, Ref(profile.name) — разделяемый на чтение, без амперсанда. Дальше всё через .value.

⚠️ Симметрии между ними нет, и это часто путают: Ref — Copyable & ~Escapable, а ~Copyable только MutableRef. Эксклюзивность проверяется на этапе компиляции: пока жив MutableRef, мутировать оригинал нельзя — «totals is exclusively accessed by 'bananas'». Под Ref чтения при этом разрешены, ошибкой будет именно мутация. Ограничение на сегодня: целевой тип обязан быть Escapable. Поддержка non-Escapable целей — явное Future Direction, компилятор пока не умеет отслеживать несколько времён жизни на значение.

#Swift #SwiftLang #Performance #Ownership #Swift64

Ref и MutableRef: ссылки без указателей 🎯 | Сетка — социальная сеть от hh.ru