有没有一种好的方法可以删除向量开头的多个元素?
我想避免多次删除,因为这会导致不必要的内存复制操作。
while vec.len() > n {
vec.remove(0);
}
我可以使用不安全的API(
ptr::drop_in_place
、ptr::copy
、Vec::set_len
)来处理这个问题,但我希望有一种更方便的方式来解决它。是否可能有一种替代方案,在其中
Vec
指针被偏移,并标记起始范围为空闲状态,而无需进行内存复制。(不需要进行内存复制)。 我现在意识到这需要Rust的底层分配器以范围而不是最初分配的指针释放内存,但事实并非如此。