Функция 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,
которая меняет значения двух указателей местами