## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 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
    }