我有以下结构:
|-- Cargo.toml
|-- src
| |-- file1.rs
| |-- file2.rs
| `-- main.rs
src/file1.rs
pub fn function1() {}
src/file2.rs
// ERROR (1): error[E0583]: file not found for module `file1`
// mod file1;
use crate::file1;
pub fn function2() {
file1::function1();
}
src/main.rs
// ERROR (2): no `file1` in the root
// use crate::file1;
mod file1;
mod file2;
fn main() {
file1::function1();
file2::function2();
}
基本上,我有不同的 import 方式function1
,这取决于我在 crate 根目录中还是在任意 Rust 文件中(请参阅ERROR (1)
和ERROR (2)
)。我对 Rust 如何管理任意文件有点迷茫:它们的行为与根 crate 不同,在根 crate 中,一个简单的mod
关键字就可以解决问题。因此,所提到的重复的答案只是部分地回答了如何从 crate 根目录引用文件,而不是为什么从另一个文件引用相同的文件应该不同(use crate::<filename>
)。