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

A used type name is not in scope.

Erroneous code examples:

    #![allow(unused)]
    fn main() {
    impl Something {} // error: type name `Something` is not in scope

    // or:

    trait Foo {
        fn bar(N); // error: type name `N` is not in scope
    }

    // or:

    fn foo(x: T) {} // type name `T` is not in scope
    }

To fix this error, please verify you didn't misspell the type name, you did declare it or imported it into the scope. Examples:

    #![allow(unused)]
    fn main() {
    struct Something;

    impl Something {} // ok!

    // or:

    trait Foo {
        type N;

        fn bar(_: Self::N); // ok!
    }

    // or:

    fn foo<T>(x: T) {} // ok!
    }

Another case that causes this error is when a type is imported into a parent module. To fix this, you can follow the suggestion and use File directly or `use super::File;` which will import the types from the parent namespace. An example that causes this error is below:

    #![allow(unused)]
    fn main() {
    use std::fs::File;

    mod foo {
        fn some_function(f: File) {}
    }
    }

    use std::fs::File;

    mod foo {
        // either
        use super::File;
        // or
        // use std::fs::File;
        fn foo(f: File) {}
    }
    fn main() {} // don't insert it for us; that'll break imports