[Rust] 소스파일의 포함 및 계층 문제
동일 크레이트 내에서 다른 소스파일의 코드를 참조하려면 어떻게 해야 할까?
사실 문제가 그렇게 간단하지만은 않다.
일단, 다른 소스파일에서 작성된 함수 등은 무식하게 갖다쓸 수가 없다.
그래서 아래와 같은 무대포 코드는

에러를 터뜨린다. boom이라는 함수를 찾을 수가 없단다.
저걸 가져오려면 모듈로 가져와야 한다.
소스파일명이 boom이니까. mod boom과 같이 하면 된다.
그럼 그 모듈을 통해서 해당 파일 내의 함수 등을 그대로 호출할 수가 있게 된다.

참고로, 다른 모듈에서 사용될 기능은 pub를 달아서 공개를 해줘야한다는 사실. 잊지 말자.
안그럼 못가져온다.
서브디렉터리에서 가져오기
근데 규모가 조금이라도 있는 프로그램을 짠다면, 컴포넌트 종류마다 디렉터리로 구분해놓고 짜는 것이 정석이다.
한데 또다른 디렉토리 안에 있는 소스파일을 접근하는건 방법이 또 다르다.
제약사항이 더 크다고 하겠다.
서브디렉터리 내의 소스를 가져오려면 그 디렉터리엔 반드시 mod.rs라는 이름의 파일이 있어야 한다.
디렉터리명으로 모듈을 가져오려고 시도하면, 반드시 그 안의 mod.rs를 가져오려고 하기 때문이다.
위와 같은 상황에서는, utils라는 이름으로 모듈 획득을 시도하면, mod.rs를 가져오게 된다.
그럼 이렇게 사용할 수 있다.


mod.rs 말고 다른 소스파일에도 분산하고 싶다면, 그냥 이래저래 만들어놓고 다시 mod.rs에서 포함하면 된다.


이렇게 말이다.
mod와 use도 공개로 해야 가시성이 확보된다는 것에 유의하자.
그럼 잘 작동할 것이다.