# Function core::intrinsics::copy 1.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
    }Run

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)