Function std::intrinsics::copy1.0.0 [] [src]

pub unsafe extern "rust-intrinsic" fn copy<T>(src: *const T,
                                              dst: *mut T,
                                              count: usize)

Copies count * size_of<T> bytes from src to dst. The source and destination may overlap.

copy is semantically equivalent to C's memmove.

Safety

Care must be taken with the ownership of src and dst. This method semantically moves the values of src into dst. However it does not drop the contents of dst, or prevent the contents of src from being dropped or used.

Examples

Efficiently create a Rust vector from an unsafe buffer:

use std::ptr;

unsafe fn from_buf_raw<T>(ptr: *const T, elts: usize) -> Vec<T> {
    let mut dst = Vec::with_capacity(elts);
    dst.set_len(elts);
    ptr::copy(ptr, dst.as_mut_ptr(), elts);
    dst
}