Error code E0116
An inherent implementation was defined for a type outside the current crate.
Erroneous code example:
#![allow(unused)] fn main() { 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:
#![allow(unused)] fn main() { type Bytes = Vec<u8>; impl Bytes { } // error, same as above }