укаазтель на несколько элементов, а потом получить обратно и освободить память? Box::from_raw_parts не поддерживает количество элементов, а Vec::from_raw_parts требует capacity.
Vec::shrink_to_fit -> vec.len() == vec.capacity()
Спасибо, я думал, он не гарантирует условие справа.
Прям такое условие не гарантированно. Нам всё ещё могут дать больше памяти чем необходимо
Vec::into_boxed_slice даст тебе Box<[T]>, дропнув лишний capacity
Да, но мне потом нужно получить его обратно и во что-то превратить, чтобы удалить.
Box<[T]> тривиально разбирается на поинтер и длину
Да, но как собирается?
let slice = slice::from_raw_parts_mut(ptr, capacity); let boxed_slice: Box<[T]> = Box::from_raw(slice);
+1 IANAL, но это выглядит легально
Gankro пять лет назад предлагала ещё Vec::from_raw_parts(ptr, len, len).into_boxed_slice()
Блин, они спрятали это в slice. Спасибо!
Обсуждают сегодня