Запись в несколько байт эффективно в ржавчине


Я работаю с необработанными указателями в Rust и пытаюсь скопировать область памяти из одного места в другое. Я успешно скопировал память, но ТОЛЬКО используя цикл for и копируя каждый байт по отдельности, используя смещение указателя. Я не могу понять, как сделать это более эффективно, т. е. как единственная копия строки байтов, может ли кто-нибудь указать мне правильное направление?

fn copy_block_memory<T>(src: *const T, dst: *mut u8) {
    let src = src as *const u8;
    let size = mem::size_of::<T>();
    unsafe {
        let bytes = slice::from_raw_parts(src, size);
        for i in 0..size as isize {
            ptr::write(dst.offset(i), bytes[i as usize]);
        }
    }
}
1 4

1 ответ:

Как упоминалось в комментариях @ker, это фактически встроено в стандартную библиотеку:

Обратите внимание, что в то время как в способе Rust перемещения объектов (и, следовательно, передачи права собственности) просто копируются биты, если объект не является Copy, вам нужно убедиться, что после копирования используется (и отбрасывается) только один из src или dst.