cratosw

项目结构

项目结构

.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.tomlCargo.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 级别集中管理依赖。

On this page