软件包布局

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.tomlCargo.lock存储在项目的根目录中。
  • 源代码置于src目录。
  • 默认库文件是src/lib.rs
  • 默认的可执行文件入口是src/main.rs
    • 其他可执行文件,可以放入src/bin
  • 集成测试放入tests目录。
  • 示例放入examples目录。
  • 基准测试放入benches目录。

如果一份 二进制文件,示例,基准测试或集成测试包含多份源文件,请将 main.rs 放入 src/binexamplesbenchestest 目录的子目录中,此时可执行文件的名称将会同目录名称相同。

注意: 按照惯例,二进制文件、示例、基准测试和集成测试都应根据 kebab-case 的命名规则,除非有兼容性问题(比如和已经存在的二进制文件重名)而必须采用其他命名方式。而内部模块通常使用依照 Rust 规范snake_case 规则进行命名。

更多关于 Rust 模块组织系统的信息,请参阅 the book.

关于手动配置 target,请查阅 Configuring a target