MODULE VISIBILITY

Rust 모듈 오류 경계

파일이 존재해도 mod로 트리에 연결되지 않으면 컴파일러는 모듈을 모르고, pub가 빠지면 경로는 보이지만 항목 접근이 막힌다.

01

파일 배치

foo.rs, foo/bar.rs처럼 물리 파일을 만든다.

filesystem
02

mod 선언

부모 모듈에 mod foo;를 써야 컴파일러가 파일을 모듈 트리에 넣는다.

tree registration
03

visibility 지정

외부에서 쓰려면 pub mod foo와 pub fn item처럼 단계별로 공개한다.

public API
04

use 적용

반복 경로를 줄이기 위해 use crate::foo::bar;를 현재 스코프에 둔다.

name binding
file exists
파일만 만들고 mod 선언 누락 Rust는 디렉터리를 자동으로 모두 스캔하지 않는다.
mod required
pub fn only
함수는 pub지만 모듈이 private 상위 모듈 경로가 닫혀 있으면 항목까지 도달할 수 없다.
상위 모듈 통과 기준
main vs lib
binary와 library 루트 혼동 crate::가 main.rs 기준인지 lib.rs 기준인지 프로젝트 구조를 확인한다.
crate root
test module
테스트는 다른 스코프에서 접근 하위 테스트 모듈에서는 super::* 또는 crate:: 경로를 명확히 쓴다.
#[cfg(test)]

수정 순서

트리 출력 mod 선언을 따라 손으로 트리를 그리면 use 오류 위치가 빨리 보인다.
공개 최소화 모든 항목을 pub로 열지 말고 외부 API만 pub use로 모아 공개한다.
경로 안정성 내부 파일 이동이 외부 사용자의 use 경로를 깨지 않도록 re-export를 둔다.