在 Rust 2018 中使用模块时如何解决错误 "no module in the root"?
How do I resolve the error "no module in the root" when using a module in Rust 2018?
我正在开发一个项目,该项目使用 src/
下文件夹中的一些本地模块。我目前正在使用 Rust 2018 版,其中一个主要变化是 handling of imports/use
statements.
我的模块代码全部正常工作,但是当我开始将它组合在一起用于整个项目时,我开始收到此错误:
error[E0432]: unresolved import `crate::lexer`
--> src/main.rs:1:5
|
1 | use crate::lexer;
| ^^^^^^^^^^^^ no `lexer` in the root
目前,我的代码是这样设置的:
src/
| main.rs
| lexer/
| mod.rs
| lexer.rs
lexer/lexer.rs
pub fn lex_stuff() -> Vec<String> { vec![String::new("test")] }
lexer/mod.rs
pub mod lexer;
main.rs
use crate::lexer;
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
我试图通过将语句更改为 use lexer
以及 use self::lexer
并添加 extern crate lexer
来解决此问题(这显然不起作用,但到底是什么,我想我会试试的)。但是,其中 none 个有效。
如何解决 no 'lexer' in the root
错误?
您需要将 mod.rs
移动到 lexer.rs
:
src/
| main.rs
| lexer.rs
| lexer/
| lexer.rs
| tokens.rs
此更改描述为 here。
您仍然需要声明main.rs包含一个模块:
mod lexer; // This, not `use`
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
请花时间重读The Rust Programming Language, specifically the section about Separating Modules into Different Files。
我正在开发一个项目,该项目使用 src/
下文件夹中的一些本地模块。我目前正在使用 Rust 2018 版,其中一个主要变化是 handling of imports/use
statements.
我的模块代码全部正常工作,但是当我开始将它组合在一起用于整个项目时,我开始收到此错误:
error[E0432]: unresolved import `crate::lexer`
--> src/main.rs:1:5
|
1 | use crate::lexer;
| ^^^^^^^^^^^^ no `lexer` in the root
目前,我的代码是这样设置的:
src/
| main.rs
| lexer/
| mod.rs
| lexer.rs
lexer/lexer.rs
pub fn lex_stuff() -> Vec<String> { vec![String::new("test")] }
lexer/mod.rs
pub mod lexer;
main.rs
use crate::lexer;
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
我试图通过将语句更改为 use lexer
以及 use self::lexer
并添加 extern crate lexer
来解决此问题(这显然不起作用,但到底是什么,我想我会试试的)。但是,其中 none 个有效。
如何解决 no 'lexer' in the root
错误?
您需要将 mod.rs
移动到 lexer.rs
:
src/
| main.rs
| lexer.rs
| lexer/
| lexer.rs
| tokens.rs
此更改描述为 here。
您仍然需要声明main.rs包含一个模块:
mod lexer; // This, not `use`
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
请花时间重读The Rust Programming Language, specifically the section about Separating Modules into Different Files。