trait Foo { type X; fn method(&self) {} } #[derive(Clone)] struct Bar { x: T::X, } struct NotClone; impl Foo for NotClone { type X = i8; } fn main() { Bar:: { x: 1 }.clone(); //~ ERROR }