프로젝트 구조
.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는 워크스페이스 상속으로 의존성을 중앙에서 관리합니다.