Rust 模块
阐述
每个 Rust 包都是一个模块树:最顶层的模块叫 crate
, 然后在 src/lib.rs
或 src/main.rs
中定义 mod xxx
即为各种子模块。
模块的路径分为绝对路径或相对路径:
- 绝对路径为
crate::
开头 - 相对路径为从当前模块开始
super
:父模块self
:子模块(大多数情况可以省略)
在模块内部,子模块和各种项都是默认私有的,如果需要外部使用,就要声明为 pub
。
模块和文件的对应关系
在文件中声明 mod xxx;
就会从和该模块同名的文件中加载模块,我们可以认为这模块的定义还是在 src/lib.rs
中。
实例
包的树形结构类似于:
crate
└── front_of_house
├── hosting
│ ├── add_to_waitlist
│ └── seat_at_table
└── serving
├── take_order
├── serve_order
└── take_payment