| An inherent implementation was defined for a type outside the current crate. | |
| Erroneous code example: | |
| ```compile_fail,E0116 | |
| impl Vec<u8> { } // error | |
| ``` | |
| You can only define an inherent implementation for a type in the same crate | |
| where the type was defined. For example, an `impl` block as above is not allowed | |
| since `Vec` is defined in the standard library. | |
| To fix this problem, you can either: | |
| - define a trait that has the desired associated functions/types/constants and | |
| implement the trait for the type in question | |
| - define a new type wrapping the type and define an implementation on the new | |
| type | |
| Note that using the `type` keyword does not work here because `type` only | |
| introduces a type alias: | |
| ```compile_fail,E0116 | |
| type Bytes = Vec<u8>; | |
| impl Bytes { } // error, same as above | |
| ``` |