软件包布局
Cargo 使用一组约定进行文件组织,这使得进入一个全新的 Cargo package 也相当简便:
.
├── Cargo.lock
├── Cargo.toml
├── src/
│ ├── lib.rs
│ ├── main.rs
│ └── bin/
│ ├── named-executable.rs
│ ├── another-executable.rs
│ └── multi-file-executable/
│ ├── main.rs
│ └── some_module.rs
├── benches/
│ ├── large-input.rs
│ └── multi-file-bench/
│ ├── main.rs
│ └── bench_module.rs
├── examples/
│ ├── simple.rs
│ └── multi-file-example/
│ ├── main.rs
│ └── ex_module.rs
└── tests/
├── some-integration-tests.rs
└── multi-file-test/
├── main.rs
└── test_module.rs
Cargo.toml和Cargo.lock存储在项目的根目录中。- 源代码置于
src目录。 - 默认库文件是
src/lib.rs。 - 默认的可执行文件入口是
src/main.rs。- 其他可执行文件,可以放入
src/bin。
- 其他可执行文件,可以放入
- 集成测试放入
tests目录。 - 示例放入
examples目录。 - 基准测试放入
benches目录。
如果一份 二进制文件,示例,基准测试或集成测试包含多份源文件,请将 main.rs 放入 src/bin,examples,benches 或 test 目录的子目录中,此时可执行文件的名称将会同目录名称相同。
注意: 按照惯例,二进制文件、示例、基准测试和集成测试都应根据
kebab-case的命名规则,除非有兼容性问题(比如和已经存在的二进制文件重名)而必须采用其他命名方式。而内部模块通常使用依照 Rust 规范的snake_case规则进行命名。
更多关于 Rust 模块组织系统的信息,请参阅 the book.
关于手动配置 target,请查阅 Configuring a target