Root
루트 Cargo.toml은 package 대신 workspace와 members를 선언합니다.
workspace map
여러 패키지를 하나의 저장소에서 관리할 때 루트 Cargo.toml과 각 멤버의 책임을 분리해 봅니다.
루트 Cargo.toml은 package 대신 workspace와 members를 선언합니다.
각 패키지는 src와 Cargo.toml을 가진 독립 crate로 남습니다.
공통 target 디렉터리와 잠금 파일이 빌드 결과와 버전을 함께 관리합니다.
멤버끼리 의존할 때는 path 의존성으로 실제 위치를 연결합니다.
cargo test는 작업공간 전체 또는 특정 패키지 단위로 범위를 좁힐 수 있습니다.
전체 패키지 목록과 공통 정책을 선언하지만 직접 빌드되는 crate는 아닙니다.
공유 로직은 라이브러리 멤버에 두고 다른 멤버가 path로 가져오게 합니다.
실행 진입점은 별도 멤버로 분리하면 명령어와 라이브러리 테스트가 깔끔해집니다.
외부 crate 버전은 멤버별 요구와 workspace 잠금 파일의 균형을 봅니다.
변경된 멤버만 테스트할지 전체 작업공간을 테스트할지 기준을 정해 둡니다.
작업공간 문제는 디렉터리 구조보다 루트 manifest가 어떤 멤버와 의존성을 묶는지부터 보면 풀립니다.