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

Функция slice_from_raw_parts

Функция slice_from_raw_parts создаёт сырой срез *const [T] из указателя на первый элемент и количества элементов. Первым параметром функция принимает сырой указатель *const T на начало данных, а вторым - длину будущего среза в элементах. Функция не проверяет корректность указателя и длины, поэтому она помечена как unsafe.

Синтаксис

std::ptr::slice_from_raw_parts(data, len)

Пример

Давайте создадим сырой срез из массива и выведем его длину:

fn main() { let arr = [1, 2, 3, 4, 5]; let ptr = arr.as_ptr(); let raw_slice = std::ptr::slice_from_raw_parts(ptr, 5); unsafe { println!("{}", (*raw_slice).len()); } }

Результат выполнения кода:

5

Пример

Давайте создадим сырой срез и получим доступ к его элементам:

fn main() { let arr = [10, 20, 30, 40, 50]; let ptr = arr.as_ptr(); let raw_slice = std::ptr::slice_from_raw_parts(ptr, 3); unsafe { let slice = &*raw_slice; println!("{:?}", slice); } }

Результат выполнения кода:

[10, 20, 30]

Пример

Давайте создадим пустой сырой срез с нулевой длиной:

fn main() { let arr = [1, 2, 3, 4, 5]; let ptr = arr.as_ptr(); let raw_slice = std::ptr::slice_from_raw_parts(ptr, 0); unsafe { println!("{}", (*raw_slice).len()); } }

Результат выполнения кода:

0

Смотрите также

  • функция slice_from_raw_parts,
    которая создаёт сырой срез из указателя и длины
  • тип const pointer,
    который представляет сырой неизменяемый указатель
  • метод as_ptr,
    который возвращает сырой указатель на данные
  • ключевое слово unsafe,
    которое позволяет выполнять небезопасные операции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить