tgoop.com/ios_broadcast/1949
Last Update:
Продолжаем разбираться с "упрощениями" в Swift. В этот раз, нас спасают от небезопасной работы с контейнерами и расширяют возможности использования новых типов Span
и RawSpan
в существующих контейнерах.
Мотивация
Многие типы контейнеров из стандартной библиотеки могут предоставлять прямой доступ к своему внутреннему представлению. До сих пор это можно было сделать только небезопасным способом. Стандартная библиотека предоставляет эту небезопасную функциональность с помощью функций, принимающих замыкания, таких как withUnsafeBufferPointer()
, withContiguousStorageIfAvailable()
и withUnsafeBytes()
. У этих функций есть несколько недостатков, самый заметный из которых — использование небезопасных типов, что делает их неприемлемыми в средах с повышенными требованиями к безопасности. API, принимающие замыкания, также могут быть сложны в сочетании с новыми функциями и друг с другом. Эти проблемы решаются с помощью Span. Согласно этому предложению, совместимые типы стандартной библиотеки будут предоставлять доступ к своему внутреннему представлению через вычисляемые свойства типа Span
и RawSpan
.
#swift #evolution #proposals