Содержимое среза научилось сдвигать на месте
31.01.2026У срезов появились методы сдвига содержимого на месте, с заполнением освобождаемого места. Пока помечены как нестабильные.
Какая была запись
Кольцевой буфер на срез не помещается по назначению, но сдвиг данных внутри среза — обычная задача: в начало дописать новые элементы, вытеснив старые. Вручную это цикл копирования с проверкой границ на каждом шаге.
Вариант без цикла — выделить новый участок, скопировать туда, вернуть указатель на него в структуру-обёртку. Но у среза нет указателя, который можно перенаправить: он сам по себе не владеет памятью.
Что даёт метод
Сдвиг внутри существующего среза, без выделения и без переноса владения. Граничные элементы заполняются заданным значением, длина среза не меняется.
Это ровно то, что нужно кольцевым буферам, реализованным поверх среза, — а таких реализаций в коде на игровых серверах и в сетевом коде много.
Оригинал
ACP approval: rust-lang/libs-team#717
Упоминаний: 1 · Просмотров: 4