| //@ 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 |
| } |