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를 새 모듈 선언처럼 생각해 파일을 다시 연결하지 않는다. | 컴파일러가 모듈을 한 번만 찾고 경로 오류가 없다. |