Содержимое среза научилось сдвигать на месте

31.01.2026

У срезов появились методы сдвига содержимого на месте, с заполнением освобождаемого места. Пока помечены как нестабильные.

Какая была запись

Кольцевой буфер на срез не помещается по назначению, но сдвиг данных внутри среза — обычная задача: в начало дописать новые элементы, вытеснив старые. Вручную это цикл копирования с проверкой границ на каждом шаге.

Вариант без цикла — выделить новый участок, скопировать туда, вернуть указатель на него в структуру-обёртку. Но у среза нет указателя, который можно перенаправить: он сам по себе не владеет памятью.

Что даёт метод

Сдвиг внутри существующего среза, без выделения и без переноса владения. Граничные элементы заполняются заданным значением, длина среза не меняется.

Это ровно то, что нужно кольцевым буферам, реализованным поверх среза, — а таких реализаций в коде на игровых серверах и в сетевом коде много.

Оригинал

ACP approval: rust-lang/libs-team#717

Упоминаний: 1 · Просмотров: 4