mod 가 찾는 파일 규칙

백엔드&인프라 추종자·2025년 6월 17일

rust 공부

목록 보기
5/14

정확히 짚으셨습니다! Rust의 mod 시스템은 디렉토리 구조와 모듈 선언이 자동으로 연결되는 일관된 규칙을 따릅니다. 그래서 하위 디렉토리에 있어도 mod bar;처럼 동일한 방식으로 선언할 수 있는 것입니다.


🧭 핵심 개념: mod가 찾는 파일 규칙

Rust 컴파일러는 mod xxx;를 보면 아래 두 가지 경로 중 하나를 자동으로 찾습니다:

📘 ① src/xxx.rs

📗 ② src/xxx/mod.rs

즉, mod foo;mod bar;는 각각 아래 중 하나를 찾습니다:

모듈 선언컴파일러가 찾는 위치
mod foo;src/foo.rs or src/foo/mod.rs
mod bar;src/bar.rs or src/bar/mod.rs

🔍 예시 1: foo.rs (단일 파일 모듈)

src/
├── main.rs       ← 크레이트 루트
├── foo.rs        ← 여기를 `mod foo;`로 선언
// main.rs
mod foo;

fn main() {
    foo::hello();
}

🔍 예시 2: bar/mod.rs (디렉토리 모듈)

src/
├── main.rs
└── bar/
    └── mod.rs     ← 여기를 `mod bar;`로 선언
// main.rs
mod bar;

fn main() {
    bar::greet();
}
// bar/mod.rs
pub fn greet() {
    println!("Hello from bar!");
}

✅ 디렉토리 안에 mod.rs가 있으면, Rust는 그것을 하위 모듈의 루트 파일로 자동 인식합니다.


💡 왜 이런 규칙이 있을까?

Rust는 모듈 선언과 파일 구조를 명시적으로 연결해서:

  • 코드 구조가 명확하게 보이도록 하고
  • 자동으로 컴파일 경로를 추론하게 하며
  • Java나 Python처럼 클래스/패키지/모듈 구조를 파일 기반으로 정리할 수 있도록 도와줍니다.

📌 요약

선언 방식대응 파일디렉토리 여부
mod foo;foo.rs 또는 foo/mod.rs상관 없음
mod bar;bar.rs 또는 bar/mod.rs상관 없음

👉 그래서 foo.rsbar/mod.rs둘 다 동일하게 mod foo;, mod bar;로 쓸 수 있는 것입니다.


원하시면 mod, use, pub을 모두 엮은 실전 예제 프로젝트도 만들어 드릴 수 있습니다.

profile
AI 답변 글을 주로 올립니다.

0개의 댓글