rust模块系统
crate是一个二进制项或者库。
crate root是一个源文件,Rust编译器以其为起始点构造crate的根模块。
包是提供一系列功能的一个或者多个crate。
一个包会包含一个Cargo.toml文件去描述如何构建这些crate。
包中包含内容的规则:
- 一个包至少包含一个crate
- 一个包至多只能包含一个库crate
- 一个包可以包含任意多个二进制crate,通过将文件放在 src/bin 目录下,每个 src/bin 下的文件都会被编译成一个独立的二进制crate
Cargo遵循的约定:
- src/main.rs 就是一个与包同名的二进制crate的crate根
- src/lib.rs 就是一个与包同名的库crate的crate根
- crate根文件由Cargo传递给rustc来实际构建库或者二进制项目
- 如果一个包同时含有 src/main.rs 和 src/lib.rs,则它有两个与包同名的crate,一个库一个二进制项