项目结构
项目结构
.NET 也有项目组织惯例,但通常没有 Rust/Cargo 那样严格。
例如使用 Visual Studio 2022 创建一个双项目解决方案(类库 + xUnit 测试项目)时,
常见结构如下:
. | SampleClassLibrary.sln +---SampleClassLibrary | Class1.cs | SampleClassLibrary.csproj +---SampleTestProject SampleTestProject.csproj UnitTest1.cs Usings.cs
- 每个项目一个独立目录,并各自持有
.csproj - 仓库根目录放置
.sln
Cargo 对 package layout 有明确约定,便于快速理解新项目:
. +-- Cargo.lock +-- Cargo.toml +-- src/ | +-- lib.rs | +-- main.rs +-- benches/ | +-- some-bench.rs +-- examples/ | +-- some-example.rs +-- tests/ +-- some-integration-test.rs
Cargo.toml与Cargo.lock位于包根目录src/lib.rs是默认库入口,src/main.rs是默认可执行入口(见 target auto-discovery)- 基准测试放在
benches,集成测试放在tests(见 测试、 基准测试) - 示例代码放在
examples - 单元测试不需要单独 crate,通常与被测代码同文件(见 测试)
管理大型项目
在 Rust 中,较大工程通常使用 Cargo 的 workspaces 组织。 workspace 可以管理多个需要协同演进的相关包。某些项目还会使用 virtual manifests,尤其在没有主包时。
管理依赖版本
.NET 大项目常用 Central Package Management 统一管理依赖版本。 Cargo 也提供了 workspace inheritance 机制,用于在 workspace 级别集中管理依赖。