//@ run-rustfix use std::ops::Deref; struct Bar(u8); struct Foo(Bar); struct Emm(Foo); impl Deref for Bar{ type Target = u8; fn deref(&self) -> &Self::Target { &self.0 } } impl Deref for Foo { type Target = Bar; fn deref(&self) -> &Self::Target { &self.0 } } impl Deref for Emm { type Target = Foo; fn deref(&self) -> &Self::Target { &self.0 } } fn main() { let a = Emm(Foo(Bar(0))); // Should suggest `&***` even when deref is pretty deep let _: *const u8 = &***a; //~ ERROR mismatched types }