文件系统层级结构

如果省略模块内容,则会指示 Rust 在另一个文件中查找:

  1. mod garden;

这会告知 Rust 可以在“src/garden.rs”中找到“garden”模块内容。同样,您可以在“src/garden/vegetables.rs”中找到“garden::vegetables”模块。

“crate”根目录位于:

  • “src/lib.rs”(对于库 crate)
  • “src/main.rs”(对于二进制文件 crate)

也可以使用“内部文档注释”对文件中定义的模块进行记录。这些用于记录包含它们的项(在本例中为模块)。

  1. //! This module implements the garden, including a highly performant germination
  2. //! implementation.
  3. // Re-export types from this module.
  4. pub use garden::Garden;
  5. pub use seeds::SeedPacket;
  6. /// Sow the given seed packets.
  7. pub fn sow(seeds: Vec<SeedPacket>) {
  8. todo!()
  9. }
  10. /// Harvest the produce in the garden that is ready.
  11. pub fn harvest(garden: &mut Garden) {
  12. todo!()
  13. }

This slide should take about 5 minutes.

  • 在 Rust 2018 之前的版本中,模块需要位于“module/mod.rs”而非“module.rs”中,对于 2018 年之后的版本而言,这仍是有效的替代方案。

  • 引入“filename.rs”来替代“filename/mod.rs”的主要原因是,许多名为“mod.rs”的文件在 IDE 中可能难以区分。

  • 即使主模块是文件,更深层的嵌套也可以使用文件夹:

    1. src/
    2. ├── main.rs
    3. ├── top_module.rs
    4. └── top_module/
    5. └── sub_module.rs
  • Rust 寻找模块的位置可通过编译器指令更改:

    1. #[path = "some/path.rs"]
    2. mod some_module;

    例如,如果您想将某个模块的测试放在名为“some_module_test.rs”的文件中(类似于 Go 中的惯例),这样做很有用。