Vec владеет буфером, длиной и capacity
Collect в новый Vec выделяет второй буфер и выбрасывает доступную capacity старого. `retain`, сортировка slice и dedup меняют существующий буфер, только удаляя или переставляя элементы.
rust / УРОВЕНЬ 3
ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ
Collect в новый Vec выделяет второй буфер и выбрасывает доступную capacity старого. `retain`, сортировка slice и dedup меняют существующий буфер, только удаляя или переставляя элементы.
Pointer/capacity checks полезны для этой функции без роста, но не доказывают общую производительность. Оптимизация всё равно требует profile и representative workload.
КОНТРОЛЬНАЯ ТОЧКА
02 / ПРОФИЛИРОВАНИЕ
Перепишите `compact_readings` in place: при корректных inclusive bounds оставьте только диапазон, отсортируйте и удалите повторы без замены или shrink allocation. Неверные bounds возвращают false без мутации.
Runner ждёт отправки кода.