//@ run-rustfix #![allow(warnings)] // Test that suggestion to add `*` characters applies to implementations of `Deref` as well as // references. struct Foo(i32); struct Bar(String); impl std::ops::Deref for Foo { type Target = i32; fn deref(&self) -> &Self::Target { &self.0 } } impl std::ops::Deref for Bar { type Target = String; fn deref(&self) -> &Self::Target { &self.0 } } fn main() { let x = Foo(42); let y: i32 = *x; //~ ERROR mismatched types let a = &42; let b: i32 = *a; //~ ERROR mismatched types // Do not make a suggestion when adding a `*` wouldn't actually fix the issue: let f = Bar("bar".to_string()); let g: String = f.to_string(); //~ ERROR mismatched types }