| The `Copy` trait was implemented on a type which contains a field that doesn't |
| implement the `Copy` trait. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0204 |
| 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: |
| |
| ```compile_fail,E0204 |
| #[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`). |