module files mod 선언은 모듈 트리를 파일 경로에 연결한다 파일을 나눌 때는 부모가 자식 모듈을 선언하고, 실제 아이템은 대응하는 파일에 둔다.
위치 해야 할 일 금지할 것 확인 기준
src/lib.rs크레이트 루트 최상위 부모 모듈을 mod로 선언한다. 자식 파일마다 루트에서 중복 선언하지 않는다. crate::front_of_house 경로가 하나의 트리로 잡힌다.
src/front_of_house.rs부모 파일 부모 모듈 본문과 자식 모듈 선언을 둔다. 파일 이름과 모듈 이름을 다르게 만들어 탐색을 흐리지 않는다. front_of_house의 공개 API가 한 파일에서 보인다.
src/front_of_house/hosting.rs자식 파일 hosting 모듈의 실제 함수와 타입을 정의한다. 자식 파일 안에서 자기 자신을 다시 mod로 선언하지 않는다. 부모 선언과 자식 파일 경로가 같은 이름으로 대응한다.
pub mod공개 경계 외부에서 접근해야 하는 모듈과 아이템에만 pub를 붙인다. 파일을 나눴다는 이유만으로 모든 항목을 공개하지 않는다. 비공개 helper는 부모 밖에서 접근되지 않는다.
use path참조 경로 다른 파일에서는 crate:: 또는 use로 선언된 모듈을 가져온다. use를 새 모듈 선언처럼 생각해 파일을 다시 연결하지 않는다. 컴파일러가 모듈을 한 번만 찾고 경로 오류가 없다.