Rust errors / Names, paths and imports
Rust compiler error · checked with rustc 1.99.0
Rust error E0468: an `extern crate` loading macros must be at the crate root
What it meansA non-root module tried to import macros from another crate.
What rustc prints
error[E0468]: an `extern crate` loading macros must be at the crate root
--> main.rs:3:5
|
3 | extern crate core; // macros from another crate
| ^^^^^^^^^^^^^^^^^^Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
A non-root module tried to import macros from another crate.
Example of erroneous code:
mod foo {
#[macro_use(debug_assert)] // error: must be at crate root to import
extern crate core; // macros from another crate
fn run_macro() { debug_assert!(true); }
}
Only extern crate imports at the crate root level are allowed to import macros.
Either move the macro import to crate root or do without the foreign macros. This will work:
#[macro_use(debug_assert)] // ok!
extern crate core;
mod foo {
fn run_macro() { debug_assert!(true); }
}From rustc --explain E0468 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0425cannot find value in this scope
- E0603is private
- E0432unresolved import
- E0005refutable pattern in local binding
- E0463can't find crate for `foo`
- E0464The compiler found multiple library files with the requested crate name
- E0469imported macro not found
- E0519The current crate is indistinguishable from one of its dependencies, in terms of metadata
Up next
Often hit nextE0425: cannot find value in this scopeA related error from the same family.Read it next →Did this answer your question?