use std::marker; struct Foo { foo: Bar<Foo> } struct Bar<T> { x: Bar<Foo> , marker: marker::PhantomData<T> } //~^ ERROR recursive type `Bar` has infinite size impl Foo { fn foo(&self) {} } fn main() { }