Error code E0412

A used type name is not in scope.

Erroneous code examples:

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
Run

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

struct Something;

impl Something {} // ok!

// or:

trait Foo {
    type N;

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

// or:

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

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:

use std::fs::File;

mod foo {
    fn some_function(f: File) {}
}
Run
use std::fs::File;

mod foo {
    // either
    use super::File;
    // or
    // use std::fs::File;
    fn foo(f: File) {}
}
Run

Back to list of error codes