diff --git a/src/librustc_resolve/diagnostics.rs b/src/librustc_resolve/diagnostics.rs index 04ab3fe70e9..dc6da1f0ef8 100644 --- a/src/librustc_resolve/diagnostics.rs +++ b/src/librustc_resolve/diagnostics.rs @@ -207,7 +207,41 @@ https://doc.rust-lang.org/reference.html#statements E0317: r##" User-defined types or type parameters cannot shadow the primitive types. This error indicates you tried to define a type, struct or enum with the same -name as an existing primitive type. +name as an existing primitive type: + +``` +struct u8 { + // ... +} +``` + +To fix this, simply name it something else. + +Such an error may also occur if you define a type parameter which shadows a +primitive type. An example would be something like: + +``` +impl MyTrait for Option { + // ... +} +``` + +In such a case, if you meant for `u8` to be a generic type parameter (i.e. any +type can be used in its place), use something like `T` instead: + +``` +impl MyTrait for Option { + // ... +} +``` + +On the other hand, if you wished to refer to the specific type `u8`, remove it +from the type parameter list: + +``` +impl MyTrait for Option { + // ... +} See the Types section of the reference for more information about the primitive types: