#![feature(extern_types)] extern "Rust" { type OpaqueListContents; } pub struct ListS { len: usize, data: [T; 0], opaque: OpaqueListContents, } pub struct Interned<'a, T>(&'a T); impl<'a, T> Clone for Interned<'a, T> { fn clone(&self) -> Self { *self } } impl<'a, T> Copy for Interned<'a, T> {} pub struct List<'tcx, T>(Interned<'tcx, ListS>); //~^ NOTE this field does not implement `Copy` //~| NOTE the `Copy` impl for `Interned<'tcx, ListS>` requires that `OpaqueListContents: Sized` impl<'tcx, T> Clone for List<'tcx, T> { fn clone(&self) -> Self { *self } } impl<'tcx, T> Copy for List<'tcx, T> {} //~^ ERROR the trait `Copy` may not be implemented for this type fn assert_is_copy() {} fn main() { assert_is_copy::>(); }