我正在开发一个利用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
来解决此问题(这显然行不通,但是到底怎么了?会尝试)。但是,这些都不起作用。
我该如何解决no 'lexer' in the root
错误?
答案 0 :(得分:3)
答案 1 :(得分:2)
您仍然需要声明 main.rs 包含一个模块:
mod lexer; // This, not `use`
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
请花一些时间重新阅读The Rust Programming Language,尤其是有关Separating Modules into Different Files的部分。