A method or constant was implemented on a primitive type. Erroneous code example: ```compile_fail,E0390 struct Foo { x: i32 } impl *mut Foo {} // error: cannot define inherent `impl` for primitive types ``` This isn't allowed, but using a trait to implement a method or constant is a good solution. Example: ``` struct Foo { x: i32 } trait Bar { fn bar(); } impl Bar for *mut Foo { fn bar() {} // ok! } ``` Instead of defining an inherent implementation on a reference, you could also move the reference inside the implementation: ```compile_fail,E0390 struct Foo; impl &Foo { // error: no nominal type found for inherent implementation fn bar(self, other: Self) {} } ``` becomes ``` struct Foo; impl Foo { fn bar(&self, other: &Self) {} } ```