workspace map

Cargo 작업공간 의존성 지도

여러 패키지를 하나의 저장소에서 관리할 때 루트 Cargo.toml과 각 멤버의 책임을 분리해 봅니다.

구성 흐름
01

Root

루트 Cargo.toml은 package 대신 workspace와 members를 선언합니다.

02

Members

각 패키지는 src와 Cargo.toml을 가진 독립 crate로 남습니다.

03

Shared

공통 target 디렉터리와 잠금 파일이 빌드 결과와 버전을 함께 관리합니다.

04

Deps

멤버끼리 의존할 때는 path 의존성으로 실제 위치를 연결합니다.

05

Tests

cargo test는 작업공간 전체 또는 특정 패키지 단위로 범위를 좁힐 수 있습니다.

경계 기준

Root manifest

전체 패키지 목록과 공통 정책을 선언하지만 직접 빌드되는 crate는 아닙니다.

Library package

공유 로직은 라이브러리 멤버에 두고 다른 멤버가 path로 가져오게 합니다.

Binary package

실행 진입점은 별도 멤버로 분리하면 명령어와 라이브러리 테스트가 깔끔해집니다.

External deps

외부 crate 버전은 멤버별 요구와 workspace 잠금 파일의 균형을 봅니다.

CI scope

변경된 멤버만 테스트할지 전체 작업공간을 테스트할지 기준을 정해 둡니다.

workspace cue

작업공간 문제는 디렉터리 구조보다 루트 manifest가 어떤 멤버와 의존성을 묶는지부터 보면 풀립니다.