Iterable: for-in, который заимствует, а не копирует 🤙🏻
🔥 Iterable — заимствующий аналог Sequence: итерация отдаёт Span'ы вместо копий элементов, благодаря чему в for-inзаходят спаны и хранилища noncopyable-элементов. Конформеры: Span, MutableSpan, RawSpan, MutableRawSpan, InlineArray. Типизированные throws — через associatedtype Failure = Never.
⚠️ И сразу важное: пропозал в статусе Active review, а не Implemented. Версию Swift ему приписывать рано, треда о принятии нет.
⚠️ Второе: стандартная библиотека сейчас посреди переименования и с текстом пропозала не совпадает. В BorrowingSequence.swift лежат BorrowingIteratorProtocol, makeBorrowingIterator() и nextSpan(maxCount:) — а не IterableIteratorProtocol / makeIterableIterator() / nextSpan(maximumCount:). Публиковать имена из пропозала как рабочий API не стоит. И нюанс поведения: для типов, конформящих и Iterable, и Sequence, for-in по-прежнему разворачивается в makeIterator(). То есть заимствующая итерация реально работает только у спанов и InlineArray; Array ничего не меняет.