Package vs Crate

패키지는 배포 단위이고 크레이트는 컴파일 단위다

Cargo 프로젝트를 읽을 때는 패키지, 크레이트, 모듈이 서로 다른 층위라는 점을 먼저 구분해야 한다.

프로젝트 구조 기준

cargo model

패키지

Cargo.toml을 가진 프로젝트 묶음으로 하나 이상의 크레이트를 포함할 수 있다.

크레이트

러스트 컴파일러가 한 번에 컴파일하는 라이브러리나 바이너리 단위다.

크레이트 루트

src/lib.rs나 src/main.rs가 모듈 트리의 시작점이 된다.

모듈

크레이트 안의 코드를 역할별 네임스페이스로 나누는 장치다.

packagecraterootmodule
읽는 법

패키지와 크레이트를 헷갈리면 파일 구조가 흐려진다. Cargo가 관리하는 단위와 컴파일러가 컴파일하는 단위를 나눠 보면 된다.