FFORGE//RS
← Маршрут

rust / УРОВЕНЬ 3

Cleanup-проход, заменивший весь буфер

ОЦЕНКА35 МИН
01

ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ

Что нужно восстановить

  • Отличать длину Vec от capacity
  • Сочетать `retain`, `sort_unstable` и `dedup` in place
  • Проверять reuse allocation без универсальных benchmark-claims

Vec владеет буфером, длиной и capacity

Collect в новый Vec выделяет второй буфер и выбрасывает доступную capacity старого. `retain`, сортировка slice и dedup меняют существующий буфер, только удаляя или переставляя элементы.

Доказывайте нужное свойство

Pointer/capacity checks полезны для этой функции без роста, но не доказывают общую производительность. Оптимизация всё равно требует profile и representative workload.

КОНТРОЛЬНАЯ ТОЧКА

Какая последовательность даёт sorted unique readings в диапазоне без второго Vec?

ISOLATED RUST 1.96
src/lib.rsРЕДАКТИРОВАНИЕ

02 / ПРОФИЛИРОВАНИЕ

Разберите профиль и исправьте причину

Перепишите `compact_readings` in place: при корректных inclusive bounds оставьте только диапазон, отсортируйте и удалите повторы без замены или shrink allocation. Неверные bounds возвращают false без мутации.

Инициализация редактора…
ОБЛАЧНЫЙ SANDBOXсеть выключена · 256 МБ · 12 с
1 / 64 KB
ВЫВОД
Runner ждёт отправки кода.