trait Trait { fn func1() -> Struct1; //~ ERROR E0277 fn func2<'a>() -> Struct2<'a, Self>; //~ ERROR E0277 fn func3() -> Struct3; //~ ERROR E0277 fn func4() -> Struct4; //~ ERROR E0277 } struct Struct1{ _t: std::marker::PhantomData<*const T>, } struct Struct2<'a, T>{ _t: &'a T, } struct Struct3{ _t: T, } struct X(T); struct Struct4{ _t: X, } struct Struct5{ _t: X, //~ ERROR E0277 } fn main() {}