#![feature(extern_types)] extern "Rust" { type OpaqueListContents; } pub struct ListS { //~^ NOTE: required because it appears within the type len: usize, data: [T; 0], opaque: OpaqueListContents, } pub struct Interned<'a, T>(&'a T); //~^ NOTE: required by an implicit `Sized` //~| NOTE: required by the implicit `Sized` 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` //~| NOTE: doesn't have a size known at compile-time //~| ERROR: cannot be known at compilation time 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` cannot be implemented for this type fn assert_is_copy() {} fn main() { assert_is_copy::>(); }