Vec owns a buffer, length and capacity
Collecting into a new Vec allocates a second buffer and replacing the old value discards reusable capacity. Operations such as retain, slice sorting and deduplication can mutate the existing buffer while only reducing or permuting its initialized elements.