Метод into_boxed_slice
Метод into_boxed_slice преобразует вектор
Vec<T> в Box<[T]>, отбрасывая
неиспользуемую ёмкость. Если вектор имел
ёмкость больше длины, лишняя память освобождается.
Метод не принимает параметров и потребляет вектор,
поэтому после вызова исходный вектор становится
недоступен.
Этот метод полезен, когда нужно передать владение данными в виде среза фиксированного размера и избавиться от избыточной ёмкости вектора.
Синтаксис
vec.into_boxed_slice()
Пример
Давайте преобразуем вектор vec![1, 2, 3, 4, 5]
в boxed-срез:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
let boxed = vec.into_boxed_slice();
println!("{:?}", boxed);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте убедимся, что после преобразования лишняя ёмкость отбрасывается. Создадим вектор с запасом ёмкости и преобразуем его:
fn main()
{
let mut vec = Vec::with_capacity(10);
vec.push("abcde");
vec.push("12345");
println!("capacity before: {}", vec.capacity());
let boxed = vec.into_boxed_slice();
println!("{:?}", boxed);
println!("len: {}", boxed.len());
}
Результат выполнения кода:
capacity before: 10
["abcde", "12345"]
len: 2
Смотрите также
-
метод
as_slice,
который возвращает срез всего вектора -
метод
shrink_to_fit,
который уменьшает ёмкость вектора до его длины -
метод
leak,
который превращает вектор в статическую ссылку на срез -
метод
into_boxed_slice,
который преобразует вектор в boxed-срез