// run-rustfix use std::ops::Deref; trait Happy {} struct LDM; impl Happy for &LDM {} struct Foo(LDM); struct Bar(Foo); struct Baz(Bar); impl Deref for Foo { type Target = LDM; fn deref(&self) -> &Self::Target { &self.0 } } impl Deref for Bar { type Target = Foo; fn deref(&self) -> &Self::Target { &self.0 } } impl Deref for Baz { type Target = Bar; fn deref(&self) -> &Self::Target { &self.0 } } fn foo(_: T) where T: Happy {} fn main() { let baz = Baz(Bar(Foo(LDM))); foo(&***baz); //~^ ERROR the trait bound `&Baz: Happy` is not satisfied }