작업공간 경계

workspace 의존성 범위

최상위 Cargo.toml은 멤버를 묶고, Cargo.locktarget은 하나로 모인다. 그러나 각 크레이트가 외부 패키지를 쓰려면 자기 manifest에 의존성을 적어야 한다.

최상위에서 공유되는 항목

[workspace] members

adder, add_one, add_two 같은 멤버 경로를 한곳에 모은다.

Cargo.lock

작업공간 전체가 같은 외부 크레이트 버전으로 해석되도록 고정한다.

target

컴파일 산출물을 최상위 디렉터리에 모아 불필요한 재빌드를 줄인다.

패키지마다 명시하는 항목

add_one = { path = "../add_one" }

adderadd_one을 쓰려면 경로 의존성을 직접 선언해야 한다.

rand = "0.8.5"

add_one만 선언했다면 adder에서는 use rand;가 실패한다.

cargo test -p add_one

전체 테스트와 특정 패키지 테스트를 필요에 따라 나누어 실행한다.

바이너리

adder

cargo run -p adder로 실행하며 라이브러리 크레이트를 조합한다.

라이브러리

add_one

add_one 함수와 테스트를 담고, 필요하면 rand 의존성을 가진다.

배포

각 크레이트 별도 처리

crates.io에 올릴 때는 작업공간 전체가 아니라 패키지 단위로 배포한다.