RPi*_*ess 11 module rust rust-2018
我正在开发一个项目,该项目在src/
. 我目前正在使用 Rust 2018 版,其中的主要变化之一是处理 import/ use
statements。
我的模块代码都正常工作,但是当我开始将它放在一起用于整个项目时,我开始收到此错误:
error[E0432]: unresolved import `crate::lexer`
--> src/main.rs:1:5
|
1 | use crate::lexer;
| ^^^^^^^^^^^^ no `lexer` in the root
Run Code Online (Sandbox Code Playgroud)
目前,我的代码设置如下:
src/
| main.rs
| lexer/
| mod.rs
| lexer.rs
Run Code Online (Sandbox Code Playgroud)
词法分析器/词法分析器.rs
pub fn lex_stuff() -> Vec<String> { vec![String::new("test")] }
Run Code Online (Sandbox Code Playgroud)
词法分析器/mod.rs
pub mod lexer;
Run Code Online (Sandbox Code Playgroud)
主文件
use crate::lexer;
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
Run Code Online (Sandbox Code Playgroud)
我试图通过将语句更改use lexer
为以及use self::lexer
并添加来解决此问题extern crate lexer
(这显然不起作用,但到底是怎么回事,我想我会尝试一下)。然而,这些都没有奏效。
我该怎么做才能解决no 'lexer' in the root
错误?
您仍然需要声明main.rs包含一个模块:
mod lexer; // This, not `use`
fn main() {
println!("Hello, world!");
lexer::lexer::lex_stuff();
}
Run Code Online (Sandbox Code Playgroud)
请花时间重新阅读Rust 编程语言,特别是关于将模块分离到不同文件的部分。