error[E0599]: the method `clone` exists for struct `Foo`, but its trait bounds were not satisfied --> $DIR/deriving-with-repr-packed-2.rs:18:11 | LL | pub struct Foo(T, T, T); | ----------------- method `clone` not found for this struct because it doesn't satisfy `Foo: Clone` LL | LL | struct NonCopy; | -------------- doesn't satisfy `NonCopy: Clone` or `NonCopy: Copy` ... LL | _ = x.clone(); | ^^^^^ method cannot be called on `Foo` due to unsatisfied trait bounds | note: there's an earlier shadowed binding `x` of type `Foo` that has method `clone` available --> $DIR/deriving-with-repr-packed-2.rs:13:9 | LL | let x: Foo = Foo(1, 2, 3); | ^ `x` of type `Foo` that has method `clone` defined earlier here ... LL | let x: Foo = Foo(NonCopy, NonCopy, NonCopy); | - earlier `x` shadowed here with type `Foo` note: the following trait bounds were not satisfied: `NonCopy: Clone` `NonCopy: Copy` --> $DIR/deriving-with-repr-packed-2.rs:5:16 | LL | #[derive(Copy, Clone, Default, PartialEq, Eq)] | ^^^^^ unsatisfied trait bound introduced in this `derive` macro help: consider annotating `NonCopy` with `#[derive(Clone, Copy)]` | LL + #[derive(Clone, Copy)] LL | struct NonCopy; | error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0599`.