У вектора появилось сжатие с возвратом ошибки вместо аварийного завершения

23.02.2026

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

Зачем нужно два набора методов

Обычное сжатие освобождает ненужную память. Если система не может этого сделать, поведение зависит от того, как настроена обработка нехватки памяти.

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

Что дают новые методы

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

Ошибка возвращается не пустым значением, а с указанием причины — поэтому отказ можно отличить от других неудач.

Оригинал

Adds the functions try_shrink_to and try_shrink_to_fit to Vec to allow shrinking in environments without global OOM handling... the fallible methods return a TryReserveError instead of an AllocError.

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