| // Emit additional suggestion to correct the trait implementation | |
| // on a pointer | |
| use std::{fmt, marker}; | |
| struct LocalType; | |
| impl fmt::Display for *mut LocalType { | |
| //~^ ERROR only traits defined in the current crate can be implemented for arbitrary types | |
| //~| NOTE impl doesn't have any local type before any uncovered type parameters | |
| //~| NOTE for more information see https://doc.rust-lang.org/reference/items/implementations.html#orphan-rules | |
| //~| NOTE `*mut LocalType` is not defined in the current crate because raw pointers are always foreign | |
| //~| NOTE define and implement a trait or new type instead | |
| //~| HELP consider introducing a new wrapper type | |
| fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | |
| write!(f, "This not compile") | |
| } | |
| } | |
| impl<T> marker::Copy for *mut T { | |
| //~^ ERROR only traits defined in the current crate can be implemented for arbitrary types | |
| //~| NOTE impl doesn't have any local type before any uncovered type parameters | |
| //~| NOTE for more information see https://doc.rust-lang.org/reference/items/implementations.html#orphan-rules | |
| //~| NOTE `*mut T` is not defined in the current crate because raw pointers are always foreign | |
| //~| NOTE define and implement a trait or new type instead | |
| } | |
| fn main() {} |