borrow и mutate: одалживать, а не копировать 💣

🔥 SE-0507 «Borrow and Mutate Accessors» (Swift 6.4) даёт свойству отдавать хранимое значение на месте: без копии и без корутины. Это дешёвая половина истории аксессоров в Swift. Синтаксис: borrow { _samples } и mutate { return &_samples } — амперсанд настоящий, он помечает значение как выставленное на мутацию, а return для однострочного тела необязателен. Ключевое требование: вернуть можно только хранимое значение, переживающее доступ. Локальные переменные и временные значения отвергаются — включая неочевидные случаи вроде borrow { i?.s }, которому понадобился бы временный String?.none. mutate без парного borrow не бывает. И вместе с yielding borrow / yielding mutate они не уживаются. На свойствах классов и акторов не поддерживаются вовсе: там нужна проверка эксклюзивности уже после доступа, поэтому остаются yielding-формы.

#Swift #SwiftLang #Performance #Ownership #Swift64

borrow и mutate: одалживать, а не копировать 💣 | Сетка — социальная сеть от hh.ru