0Pricing
Learn Rust Coding · 강의

모듈과 mod

코드 구성하기

모듈과 mod은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

모듈을 사용하는 이유

프로그램이 커지면 모든 내용을 하나의 파일에 넣는 방식은 복잡해집니다. 모듈을 사용하면 관련 코드를 그룹화하고 공개 범위를 제어하며 이름 충돌을 피할 수 있습니다.

mod 키워드는 모듈을 선언합니다.

인라인 모듈 선언하기

mod name { ... }을 사용해 파일 안에 바로 모듈을 정의할 수 있습니다. 중괄호 사이의 모든 내용은 해당 모듈에 속합니다.

mod greetings {
    fn hello() {
        println!("hello from the module");
    }
}

fn main() {
    println!("module declared above");
}

모듈 함수 호출하기

모듈 내부의 항목은 기본적으로 비공개입니다. 외부에서 호출하려면 pub이어야 하며, ::을 사용한 모듈 경로로 참조해야 합니다.

mod greetings {
    pub fn hello() {
        println!("hello!");
    }
}

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

중첩 모듈

모듈은 다른 모듈을 포함할 수 있어 트리를 구성합니다. 경로에는 각 단계가 ::로 구분되어 나열됩니다.

mod app {
    pub mod ui {
        pub fn draw() {
            println!("drawing ui");
        }
    }
}

fn main() {
    app::ui::draw();
}

모듈은 함수 외에도 그룹화합니다

모듈에는 함수, 구조체, 열거형, 상수, 그리고 다른 모듈까지 담을 수 있습니다. 따라서 관련 타입과 동작을 함께 관리할 수 있습니다.

mod shapes {
    pub struct Circle {
        pub radius: f64,
    }
    pub const PI: f64 = 3.14159;
}

fn main() {
    let c = shapes::Circle { radius: 2.0 };
    println!("area = {}", shapes::PI * c.radius * c.radius);
}

모듈 트리

모든 크레이트에는 루트 모듈이 있습니다. 선언한 모듈은 그 아래에 트리를 형성합니다. 경로는 파일 시스템의 폴더와 비슷하게 항목의 위치를 나타냅니다.

super: 부모 모듈

모듈 내부에서 super는 부모 모듈을 가리킵니다. 이를 사용하면 자식 모듈에서 한 단계 위에 정의된 항목을 호출할 수 있습니다.

fn top_level() {
    println!("called via super");
}

mod inner {
    pub fn run() {
        super::top_level();
    }
}

fn main() {
    inner::run();
}

self: 현재 모듈

self는 현재 모듈을 가리킵니다. 주로 경로에서 항목이 어디에 있는지 명확히 표시할 때 사용합니다.

mod tools {
    pub fn helper() {
        println!("helper running");
    }
    pub fn run() {
        self::helper();
    }
}

fn main() {
    tools::run();
}

별도 파일의 모듈

인라인 모듈 외에도 mod network;(세미콜론을 사용하고 본문은 없음)는 Rust에 network.rs 또는 network/mod.rs에서 내용을 불러오도록 지시합니다.

이 방식으로 실제 프로젝트는 하나의 모듈 트리를 유지하면서 코드를 여러 파일로 나눕니다.

비공개 경계

모듈은 비공개 경계를 형성합니다. 자식 모듈은 조상 모듈의 비공개 항목을 볼 수 있지만, 부모 모듈은 자식 모듈의 비공개 항목에 접근할 수 없습니다.

이 캡슐화는 내부 세부 사항을 숨겨 줍니다.

mod bank {
    fn secret() -> i32 { 42 }
    pub fn reveal() -> i32 { secret() }
}

fn main() {
    println!("{}", bank::reveal());
}

실제 프로젝트 구성하기

모듈을 도메인 구조에 맞춰 사용하세요. 예를 들어 auth, db, handlers처럼 구성할 수 있습니다. 각 모듈의 역할을 명확히 유지하고 공개 범위는 작게 만들며 나머지는 숨기세요.

명확한 모듈 경계를 사용하면 규모가 큰 코드베이스도 쉽게 탐색할 수 있습니다.

빠른 확인

모듈에 대해 배운 내용을 확인해 보세요.

복습

모듈을 사용해 코드를 구성하는 방법을 배웠습니다.

  • mod name { ... }은 인라인 모듈을 선언합니다.
  • 항목은 기본적으로 비공개이며, pub을 사용해 외부에 공개합니다.
  • 경로에서 ::을 사용해 모듈 트리를 탐색합니다.
  • super, self, mod name;을 사용해 모듈을 탐색하고 분리합니다.

자주 묻는 질문

“모듈과 mod” 강의는 무료인가요?

네 — “모듈과 mod” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.

“모듈과 mod”에서 뭘 배우나요?

코드 구성하기 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“모듈과 mod” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 모듈과 mod
  2. pub와 가시성
  3. use와 경로
  4. 크레이트와 크레이트 루트
← Learn Rust Coding(으)로 돌아가기