workspace map
Cargo 작업공간은 루트 manifest가 멤버와 의존성 경계를 묶는다
여러 패키지를 한 저장소에서 관리할 때는 디렉터리보다 루트Cargo.toml, members, path 의존성의 경계를 먼저
읽는다.
핵심 신호
루트는 직접 빌드되는 crate가 아니라 멤버 목록, 공통 target, 잠금
파일, 테스트 범위를 묶는 관리 지점이다.
| 구성 | 역할 | 확인 파일 | 실패 신호 |
|---|---|---|---|
| Root manifest | workspace와 members를 선언한다. | ./Cargo.toml |
package와 workspace 책임이 섞인다. |
| Members | 각 패키지는 독립 crate로 남는다. | members = [...] |
경로 누락으로 빌드 대상에서 빠진다. |
| Shared artifacts | target과 lock을 함께 관리한다. |
target/, Cargo.lock
|
멤버마다 결과와 버전이 흩어진다. |
| Path deps | 멤버끼리 로컬 경로로 의존한다. | path = "../lib" |
crate 이름과 실제 경로가 맞지 않는다. |
| Test scope | 전체 또는 특정 패키지만 검증한다. | cargo test -p app |
CI가 변경 범위를 과소 검증한다. |
Library
공유 로직은 라이브러리 멤버에 두고 다른 멤버가 가져온다.
Binary
실행 진입점은 별도 멤버로 두면 테스트 경계가 선명하다.
External deps
외부 crate 버전은 멤버 요구와 잠금 파일을 같이 본다.
CI
빠른 검증과 전체 workspace 검증의 기준을 나눠 둔다.