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

Функция copy

Функция copy выполняет побитовое копирование значения типа T из области памяти, на которую указывает src, в область памяти, на которую указывает dst. Параметрами функция принимает два указателя: src - указатель на источник, и dst - указатель на приёмник. Функция является небезопасной, так как не проверяет корректность указателей, их выравнивание и пересечение областей памяти. Если области памяти пересекаются, следует использовать copy_nonoverlapping.

Синтаксис

pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize)

Пример

Давайте скопируем значение из одной переменной в другую с помощью функции copy:

fn main() { let src: i32 = 12345; let mut dst: i32 = 0; unsafe { std::ptr::copy(&src, &mut dst, 1); } println!("{}", dst); }

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

12345

Пример

Давайте скопируем массив чисел из одного вектора в другой с помощью функции copy:

fn main() { let src = vec![1, 2, 3, 4, 5]; let mut dst = vec![0; 5]; unsafe { std::ptr::copy(src.as_ptr(), dst.as_mut_ptr(), src.len()); } println!("{:?}", dst); }

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

[1, 2, 3, 4, 5]

Пример

Давайте скопируем строковые данные из одного буфера в другой с помощью функции copy:

fn main() { let src = b"abcde"; let mut dst = [0u8; 5]; unsafe { std::ptr::copy(src.as_ptr(), dst.as_mut_ptr(), src.len()); } let res = std::str::from_utf8(&dst).unwrap(); println!("{}", res); }

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

"abcde"

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

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