РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
272 of 1245 menu

Метод 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-срез
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить