main.rs
main2.rs
file1.rs
src/something.rs
Cargo.toml
Run Code Online (Sandbox Code Playgroud)
on main.rs,做mod file1工作,但做mod file1onmain2.rs会导致
file not found for module `file1`
Run Code Online (Sandbox Code Playgroud)
为什么只能main.rs用 声明同级文件mod?
main.rs新模块可以从和声明lib.rs。第一个用于二进制包,后者用于库。需要注意的是,如果一个包包含这两个文件,那么它将有两个同名的 crate(一个库和一个二进制文件)。您还可以拥有多个二进制板条箱,如果您定义crate roots(如下所述)src/bin- 每个文件将被视为单独的二进制板条箱。这在rust book中有详细解释。
这两个文件很特殊 - 它们被称为crate root,因为它们形成树状结构。每个模块都应该是它的一部分。您不能在该树之外定义模块。这在书中再次得到了解释。
因此,为了能够从内部定义一个新模块main2.rs,它要么必须是 a crate root- 即它必须有 amain()并且位于其中/src/bin/main2.rs,要么它必须是模块树的一部分,从某些板条箱根部下降。
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |