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

Функция take

Функция take из модуля std::ptr извлекает значение из указателя, заменяя его на значение по умолчанию. Параметром функция принимает указатель на значение, которое нужно извлечь. Функция является небезопасной, так как работает с сырыми указателями и требует гарантий корректности со стороны программиста.

Синтаксис

unsafe fn take<T>(dest: *mut T) -> T

Пример

Давайте извлечём значение из указателя, заменив его на значение по умолчанию:

use std::ptr; fn main() { let mut value = 12345; let ptr = &mut value as *mut i32; unsafe { let old = ptr::take(ptr); println!("{}", old); println!("{}", *ptr); } }

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

12345 0

Пример

Давайте извлечём значение типа String из указателя:

use std::ptr; fn main() { let mut value = String::from("abcde"); let ptr = &mut value as *mut String; unsafe { let old = ptr::take(ptr); println!("{}", old); println!("{}", value); } }

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

"abcde" ""

Пример

Давайте извлечём значение из указателя на элемент массива:

use std::ptr; fn main() { let mut arr = vec![1, 2, 3, 4, 5]; let ptr = &mut arr[2] as *mut i32; unsafe { let old = ptr::take(ptr); println!("{}", old); println!("{}", arr[2]); } }

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

3 0

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

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