| An import was unresolved. | |
| Erroneous code example: | |
| ```compile_fail,E0432 | |
| use something::Foo; // error: unresolved import `something::Foo`. | |
| ``` | |
| In Rust 2015, paths in `use` statements are relative to the crate root. To | |
| import items relative to the current and parent modules, use the `self::` and | |
| `super::` prefixes, respectively. | |
| In Rust 2018 or later, paths in `use` statements are relative to the current | |
| module unless they begin with the name of a crate or a literal `crate::`, in | |
| which case they start from the crate root. As in Rust 2015 code, the `self::` | |
| and `super::` prefixes refer to the current and parent modules respectively. | |
| Also verify that you didn't misspell the import name and that the import exists | |
| in the module from where you tried to import it. Example: | |
| ``` | |
| use self::something::Foo; // Ok. | |
| mod something { | |
| pub struct Foo; | |
| } | |
| # fn main() {} | |
| ``` | |
| If you tried to use a module from an external crate and are using Rust 2015, | |
| you may have missed the `extern crate` declaration (which is usually placed in | |
| the crate root): | |
| ```edition2015 | |
| extern crate core; // Required to use the `core` crate in Rust 2015. | |
| use core::any; | |
| # fn main() {} | |
| ``` | |
| Since Rust 2018 the `extern crate` declaration is not required and | |
| you can instead just `use` it: | |
| ```edition2018 | |
| use core::any; // No extern crate required in Rust 2018. | |
| # fn main() {} | |
| ``` |