Copy in core::marker - Rust
Description: Types whose values can be duplicated simply by copying bits.

## Copy

# Trait Copy

1.6.0 · Source

    pub trait Copy: Clone { }

Expand description

Types whose values can be duplicated simply by copying bits.

By default, variable bindings have ‘move semantics.’ In other words:

    #[derive(Debug)]
    struct Foo;

    let x = Foo;

    let y = x;

    // `x` has moved into `y`, and so cannot be used

    // println!("{x:?}"); // error: use of moved value

However, if a type implements `Copy`, it instead has ‘copy semantics’:

    // We can derive a `Copy` implementation. `Clone` is also required, as it's
    // a supertrait of `Copy`.
    #[derive(Debug, Copy, Clone)]
    struct Foo;

    let x = Foo;

    let y = x;

    // `y` is a copy of `x`

    println!("{x:?}"); // A-OK!

It’s important to note that in these two examples, the only difference is whether you are allowed to access `x` after the assignment. Under the hood, both a copy and a move can result in bits being copied in memory, although this is sometimes optimized away.

### §How can I implement `Copy`?

There are two ways to implement `Copy` on your type. The simplest is to use `derive`:

    #[derive(Copy, Clone)]
    struct MyStruct;

You can also implement `Copy` and `Clone` manually:

    struct MyStruct;

    impl Copy for MyStruct { }

    impl Clone for MyStruct {
        fn clone(&self) -> MyStruct {
            *self
        }
    }

There is a small difference between the two. The `derive` strategy will also place a `Copy` bound on type parameters:

    #[derive(Clone)]
    struct MyStruct<T>(T);

    impl<T: Copy> Copy for MyStruct<T> { }

This isn’t always desired. For example, shared references (`&T`) can be copied regardless of whether `T` is `Copy`. Likewise, a generic struct containing markers such as `PhantomData` could potentially be duplicated with a bit-wise copy.

### §What’s the difference between `Copy` and `Clone`?

Copies happen implicitly, for example as part of an assignment `y = x`. The behavior of `Copy` is not overloadable; it is always a simple bit-wise copy.

Cloning is an explicit action, `x.clone()`. The implementation of `Clone` can provide any type-specific behavior necessary to duplicate values safely. For example, the implementation of `Clone` for `String` needs to copy the pointed-to string buffer in the heap. A simple bitwise copy of `String` values would merely copy the pointer, leading to a double free down the line. For this reason, `String` is `Clone` but not `Copy`.

`Clone` is a supertrait of `Copy`, so everything which is `Copy` must also implement `Clone`. If a type is `Copy` then its `Clone` implementation only needs to return `*self` (see the example above).

### §When can my type be `Copy`?

A type can implement `Copy` if all of its components implement `Copy`. For example, this struct can be `Copy`:

    #[derive(Copy, Clone)]
    struct Point {
       x: i32,
       y: i32,
    }

A struct can be `Copy`, and `i32` is `Copy`, therefore `Point` is eligible to be `Copy`. By contrast, consider

    struct PointList {
        points: Vec<Point>,
    }

The struct `PointList` cannot implement `Copy`, because `Vec<T>` is not `Copy`. If we attempt to derive a `Copy` implementation, we’ll get an error:

    the trait `Copy` cannot be implemented for this type; field `points` does not implement `Copy`

Shared references (`&T`) are also `Copy`, so a type can be `Copy`, even when it holds shared references of types `T` that are not `Copy`. Consider the following struct, which can implement `Copy`, because it only holds a shared reference to our non-`Copy` type `PointList` from above:

    #[derive(Copy, Clone)]
    struct PointListWrapper<'a> {
        point_list_ref: &'a PointList,
    }

### §When can’t my type be `Copy`?

Some types can’t be copied safely. For example, copying `&mut T` would create an aliased mutable reference. Copying `String` would duplicate responsibility for managing the `String`’s buffer, leading to a double free.

Generalizing the latter case, any type implementing `Drop` can’t be `Copy`, because it’s managing some resource besides its own `size_of::<T>` bytes.

If you try to implement `Copy` on a struct or enum containing non-`Copy` data, you will get the error E0204.

### §When should my type be `Copy`?

Generally speaking, if your type can implement `Copy`, it should. Keep in mind, though, that implementing `Copy` is part of the public API of your type. If the type might become non-`Copy` in the future, it could be prudent to omit the `Copy` implementation now, to avoid a breaking API change.

### §Additional implementors

In addition to the implementors listed below, the following types also implement `Copy`:

- Function item types (i.e., the distinct types defined for each function)
- Function pointer types (e.g., `fn() -> i32`)
- Closure types, if they capture no value from the environment or if all such captured values implement `Copy` themselves. Note that variables captured by shared reference always implement `Copy` (even if the referent doesn’t), while variables captured by mutable reference never implement `Copy`.

## Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

## Implementors§

Source§

### impl Copy for AsciiChar

1.0.0 · Source§

### impl Copy for core::cmp::Ordering

1.34.0 · Source§

### impl Copy for Infallible

1.64.0 · Source§

### impl Copy for FromBytesWithNulError

1.28.0 · Source§

### impl Copy for core::fmt::Alignment

Source§

### impl Copy for DebugAsHex

Source§

### impl Copy for Sign

Source§

### impl Copy for Locality

1.7.0 · Source§

### impl Copy for IpAddr

Source§

### impl Copy for Ipv6MulticastScope

1.0.0 · Source§

### impl Copy for SocketAddr

1.0.0 · Source§

### impl Copy for FpCategory

1.55.0 · Source§

### impl Copy for IntErrorKind

Source§

### impl Copy for SearchStep

1.0.0 · Source§

### impl Copy for core::sync::atomic::Ordering

1.0.0 · Source§

### impl Copy for bool

1.0.0 · Source§

### impl Copy for char

1.0.0 · Source§

### impl Copy for f16

1.0.0 · Source§

### impl Copy for f32

1.0.0 · Source§

### impl Copy for f64

1.0.0 · Source§

### impl Copy for f128

1.0.0 · Source§

### impl Copy for i8

1.0.0 · Source§

### impl Copy for i16

1.0.0 · Source§

### impl Copy for i32

1.0.0 · Source§

### impl Copy for i64

1.0.0 · Source§

### impl Copy for i128

1.0.0 · Source§

### impl Copy for isize

Source§

### impl Copy for !

1.0.0 · Source§

### impl Copy for u8

1.0.0 · Source§

### impl Copy for u16

1.0.0 · Source§

### impl Copy for u32

1.0.0 · Source§

### impl Copy for u64

1.0.0 · Source§

### impl Copy for u128

1.0.0 · Source§

### impl Copy for usize

Source§

### impl Copy for AllocError

1.28.0 · Source§

### impl Copy for Layout

1.0.0 · Source§

### impl Copy for TypeId

1.59.0 · Source§

### impl Copy for float64x1_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x1x2_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x1x3_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x1x4_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x2_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x2x2_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x2x3_t

Available on AArch64 or `target_arch=arm64ec` only.
1.59.0 · Source§

### impl Copy for float64x2x4_t

Available on AArch64 or `target_arch=arm64ec` only.
1.94.0 · Source§

### impl Copy for float16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.94.0 · Source§

### impl Copy for float16x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x2x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x2x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x2x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for float32x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x16_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x16x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x16x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int8x16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int16x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x2x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x2x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x2x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int32x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x1_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x1x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x1x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x1x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x2x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x2x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for int64x2x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x16_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x16x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x16x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly8x16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly16x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x1_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x1x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x1x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x1x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x2x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x2x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for poly64x2x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x16_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x16x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x16x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint8x16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x8_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x8x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x8x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint16x8x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x2x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x2x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x2x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x4x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x4x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint32x4x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x1_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x1x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x1x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x1x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x2x2_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x2x3_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
1.59.0 · Source§

### impl Copy for uint64x2x4_t

Available on (AArch64 or `target_arch=arm64ec` or target feature `v7`) and (ARM or AArch64 or `target_arch=arm64ec`) only.
Source§

### impl Copy for m128

Available on LoongArch LA64 only.
Source§

### impl Copy for m128d

Available on LoongArch LA64 only.
Source§

### impl Copy for m128i

Available on LoongArch LA64 only.
Source§

### impl Copy for m256

Available on LoongArch LA64 only.
Source§

### impl Copy for m256d

Available on LoongArch LA64 only.
Source§

### impl Copy for m256i

Available on LoongArch LA64 only.
Source§

### impl Copy for f16x2

Available on `target_arch=nvptx64` only.
Source§

### impl Copy for core::arch::powerpc::vector_bool_char

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_bool_int

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for vector_bool_long

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_bool_short

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_double

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_float

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_signed_char

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_signed_int

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for vector_signed_long

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_signed_short

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_unsigned_char

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_unsigned_int

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for vector_unsigned_long

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::powerpc::vector_unsigned_short

Available on PowerPC or PowerPC-64 only.
Source§

### impl Copy for core::arch::s390x::vector_bool_char

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_bool_int

Available on s390x only.
Source§

### impl Copy for vector_bool_long_long

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_bool_short

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_double

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_float

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_signed_char

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_signed_int

Available on s390x only.
Source§

### impl Copy for vector_signed_long_long

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_signed_short

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_unsigned_char

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_unsigned_int

Available on s390x only.
Source§

### impl Copy for vector_unsigned_long_long

Available on s390x only.
Source§

### impl Copy for core::arch::s390x::vector_unsigned_short

Available on s390x only.
1.54.0 · Source§

### impl Copy for v128

Available on `target_family=wasm` only.
1.27.0 · Source§

### impl Copy for CpuidResult

Available on x86 or x86-64 only.
1.27.0 · Source§

### impl Copy for __m128

Available on x86 or x86-64 only.
1.89.0 · Source§

### impl Copy for __m128bh

Available on x86 or x86-64 only.
1.27.0 · Source§

### impl Copy for __m128d

Available on x86 or x86-64 only.
1.94.0 · Source§

### impl Copy for __m128h

Available on x86 or x86-64 only.
1.27.0 · Source§

### impl Copy for __m128i

Available on x86 or x86-64 only.
1.27.0 · Source§

### impl Copy for __m256

Available on x86 or x86-64 only.
1.89.0 · Source§

### impl Copy for __m256bh

Available on x86 or x86-64 only.
1.27.0 · Source§

### impl Copy for __m256d

Available on x86 or x86-64 only.
1.94.0 · Source§

### impl Copy for __m256h

Available on x86 or x86-64 only.
1.27.0 · Source§

### impl Copy for __m256i

Available on x86 or x86-64 only.
1.72.0 · Source§

### impl Copy for __m512

Available on x86 or x86-64 only.
1.89.0 · Source§

### impl Copy for __m512bh

Available on x86 or x86-64 only.
1.72.0 · Source§

### impl Copy for __m512d

Available on x86 or x86-64 only.
1.94.0 · Source§

### impl Copy for __m512h

Available on x86 or x86-64 only.
1.72.0 · Source§

### impl Copy for __m512i

Available on x86 or x86-64 only.
Source§

### impl Copy for bf16

Available on x86 or x86-64 only.
1.34.0 · Source§

### impl Copy for TryFromSliceError

1.34.0 · Source§

### impl Copy for CharTryFromError

1.59.0 · Source§

### impl Copy for TryFromCharError

1.0.0 · Source§

### impl Copy for Error

Source§

### impl Copy for FormattingOptions

Source§

### impl Copy for Assume

1.0.0 · Source§

### impl Copy for Ipv4Addr

1.0.0 · Source§

### impl Copy for Ipv6Addr

1.0.0 · Source§

### impl Copy for SocketAddrV4

1.0.0 · Source§

### impl Copy for SocketAddrV6

1.34.0 · Source§

### impl Copy for TryFromIntError

1.0.0 · Source§

### impl Copy for RangeFull

Source§

### impl Copy for core::ptr::Alignment

1.0.0 · Source§

### impl Copy for Utf8Error

1.36.0 · Source§

### impl Copy for RawWakerVTable

1.3.0 · Source§

### impl Copy for Duration

1.33.0 · Source§

### impl Copy for PhantomPinned

Source§

### impl<'a> Copy for Utf8Pattern<'a>

1.0.0 · Source§

### impl<'a> Copy for Arguments<'a>

1.10.0 · Source§

### impl<'a> Copy for Location<'a>

Source§

### impl<'a> Copy for PhantomContravariantLifetime<'a>

Source§

### impl<'a> Copy for PhantomCovariantLifetime<'a>

Source§

### impl<'a> Copy for PhantomInvariantLifetime<'a>

1.55.0 · Source§

### impl<B: Copy, C: Copy> Copy for ControlFlow<B, C>

Source§

### impl<Dyn: PointeeSized> Copy for DynMetadata<Dyn>

1.28.0 · Source§

### impl<F: Copy> Copy for RepeatWith<F>

1.0.0 · Source§

### impl<Idx: Copy> Copy for RangeTo<Idx>

1.26.0 · Source§

### impl<Idx: Copy> Copy for core::ops::RangeToInclusive<Idx>

Source§

### impl<Idx: Copy> Copy for Range<Idx>

Source§

### impl<Idx: Copy> Copy for RangeFrom<Idx>

Source§

### impl<Idx: Copy> Copy for RangeInclusive<Idx>

Source§

### impl<Idx: Copy> Copy for core::range::RangeToInclusive<Idx>

Source§

### impl<P: Copy + ?Sized> Copy for MaybeDangling<P>

1.33.0 · Source§

### impl<Ptr: Copy> Copy for Pin<Ptr>

1.21.0 · Source§

### impl<T> Copy for Discriminant<T>

1.28.0 · Source§

### impl<T> Copy for NonZero<T>
where T: ZeroablePrimitive,

Source§

### impl<T> Copy for Exclusive<T>
where T: Sync + Copy,

Source§

### impl<T> Copy for PhantomContravariant<T>
where T: ?Sized,

Source§

### impl<T> Copy for PhantomCovariant<T>
where T: ?Sized,

Source§

### impl<T> Copy for PhantomInvariant<T>
where T: ?Sized,

Source§

### impl<T, const N: usize> Copy for Mask<T, N>
where T: MaskElement, LaneCount<N>: SupportedLaneCount,

Source§

### impl<T, const N: usize> Copy for Simd<T, N>
where LaneCount<N>: SupportedLaneCount, T: SimdElement,

1.20.0 · Source§

### impl<T: Copy + ?Sized> Copy for ManuallyDrop<T>

1.17.0 · Source§

### impl<T: Copy> Copy for Bound<T>

1.0.0 · Source§

### impl<T: Copy> Copy for Option<T>

1.36.0 · Source§

### impl<T: Copy> Copy for Poll<T>

1.19.0 · Source§

### impl<T: Copy> Copy for Reverse<T>

1.74.0 · Source§

### impl<T: Copy> Copy for Saturating<T>

1.0.0 · Source§

### impl<T: Copy> Copy for Wrapping<T>

1.36.0 · Source§

### impl<T: Copy> Copy for MaybeUninit<T>

1.0.0 · Source§

### impl<T: Copy, E: Copy> Copy for Result<T, E>

1.58.0 · Source§

### impl<T: Copy, const N: usize> Copy for [T; N]

1.0.0 · Source§

### impl<T: PointeeSized> Copy for *const T

1.0.0 · Source§

### impl<T: PointeeSized> Copy for *mut T

1.0.0 · Source§

### impl<T: PointeeSized> Copy for &T

Shared references can be copied, but mutable references cannot!

1.25.0 · Source§

### impl<T: PointeeSized> Copy for NonNull<T>

1.0.0 · Source§

### impl<T: PointeeSized> Copy for PhantomData<T>

Source§

### impl<Y: Copy, R: Copy> Copy for CoroutineState<Y, R>