Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error code E0204

The Copy trait was implemented on a type which contains a field that doesn't implement the Copy trait.

Erroneous code example:

#![allow(unused)]
fn main() {
struct Foo {
    foo: Vec<u32>,
}

impl Copy for Foo { } // error!
}

The Copy trait is implemented by default only on primitive types. If your type only contains primitive types, you'll be able to implement Copy on it. Otherwise, it won't be possible.

Here's another example that will fail:

#![allow(unused)]
fn main() {
#[derive(Copy)] // error!
struct Foo<'a> {
    ty: &'a mut bool,
}
}

This fails because &mut T is not Copy, even when T is Copy (this differs from the behavior for &T, which is always Copy).