모듈과 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 모듈과 mod
- pub와 가시성
- use와 경로
- 크레이트와 크레이트 루트