Module 将main.rs拆分为相互引用的文件

Module 将main.rs拆分为相互引用的文件,module,rust,rust-crates,Module,Rust,Rust Crates,我的结构如下: |-货舱 |-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/

我的结构如下:

|-货舱 |-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();
}
基本上,我有一种不同的导入函数1的方法,这取决于我在板条箱根目录中或在任意的Rust文件中,请参见错误1和错误2。 我对Rust如何管理任意文件有点迷茫:它们的行为与根板条箱不同,根板条箱中使用一个简单的mod关键字。
因此,上面提到的答案(这是一个副本)仅部分回答了如何从板条箱根目录引用文件,而不是为什么从另一个目录引用同一个文件应该是不同的使用板条箱:。

这有帮助吗?谢谢你的回答@PeterHall。这部分回答了我的问题,因为它不包括相互引用的非板条箱根模块。请参见src/file2.rs。所有路径都可以作为根的完全限定路径寻址。您可以将其视为在文件系统中的文件中写入相对路径,其中crainte关键字类似于/,从根开始。您实际上不需要使用use语句。它们为方便起见,不必到处键入完整路径。它们与您在模块层次结构中的位置有关;也在主楼里。但这意味着范围中将有两个file1副本。不同之处在于模块已经在main的作用域中,因为main是直接父级。这有帮助吗?谢谢你的回答@PeterHall。这部分回答了我的问题,因为它不包括相互引用的非板条箱根模块。请参见src/file2.rs。所有路径都可以作为根的完全限定路径寻址。您可以将其视为在文件系统中的文件中写入相对路径,其中crainte关键字类似于/,从根开始。您实际上不需要使用use语句。它们为方便起见,不必到处键入完整路径。它们与您在模块层次结构中的位置有关;也在主楼里。但这意味着范围中将有两个file1副本。区别在于模块已经在main中的作用域中,因为main是直接父级。