프로젝트 구조

.NET 프로젝트에도 일반적인 디렉터리 구성이 있지만 Rust 프로젝트보다 형식이 자유로운 편입니다. Visual Studio 2022에서 클래스 라이브러리와 xUnit 테스트 프로젝트로 구성된 솔루션을 만들면 다음과 같은 구조가 됩니다.

.
|   SampleClassLibrary.sln
+---SampleClassLibrary
|       Class1.cs
|       SampleClassLibrary.csproj
+---SampleTestProject
        SampleTestProject.csproj
        UnitTest1.cs
        Usings.cs

각 프로젝트는 자체 .csproj 파일과 별도 디렉터리를 사용합니다. 저장소 루트에는 .sln 파일이 있습니다.

Cargo는 새 패키지의 구성을 쉽게 파악할 수 있도록 다음 패키지 레이아웃을 따릅니다.

.
+-- 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는 기본 실행 파일입니다. 자세한 규칙은 타깃 자동 검색을 참고할 수 있습니다.
  • 벤치마크는 benches에, 통합 테스트는 tests에 둡니다. 테스트와 벤치마킹 장에서 자세히 다룹니다.
  • 예제는 examples에 둡니다.
  • 단위 테스트용 크레이트를 별도로 만들지 않습니다. 단위 테스트는 대상 코드와 같은 파일에 둡니다. 테스트 장에서 예제를 확인할 수 있습니다.

대규모 프로젝트 관리

Rust의 대규모 프로젝트에서는 Cargo 워크스페이스로 관련 패키지를 함께 관리할 수 있습니다. 기본 패키지가 없는 프로젝트에서는 가상 매니페스트를 사용하기도 합니다.

의존성 버전 관리

대규모 .NET 프로젝트에서는 중앙 패키지 관리로 의존성 버전을 한곳에서 관리할 수 있습니다. Cargo는 워크스페이스 상속으로 의존성을 중앙에서 관리합니다.