isTriviallyIdentical: проверка хранилища за O(1) 😎

🔥 SE-0494 (Swift 6.4) добавляет гарантированно константную проверку на общее CoW-хранилище. true означает, что значения равны, — без обхода элементов. false не означает «не равны», он означает «не знаю». Где есть: String и три его представления, Substring с представлениями, Array / ArraySlice / ContiguousArray, Dictionary, Set, четыре типа Unsafe*BufferPointer, UTF8Span, Span, RawSpan. Типичное применение — быстрый путь перед дорогой работой: если массив тот же самый по хранилищу, пересобирать индекс незачем.

⚠️ Пара уточнений. Пропозал приняли с изменениями — метод переименовали из isIdentical(to:). И оговорка про NaN относится не к рефлексивности, а к аксиоме импликации: a.isTriviallyIdentical(to: a) истинно безусловно, а вот «из true следует ==» имеет сноску про исключительные значения.

#Swift #SwiftLang #Performance #Swift64 #iOSDev

isTriviallyIdentical: проверка хранилища за O(1) 😎 | Сетка — социальная сеть от hh.ru