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