채널톡 아이콘

우아한 Rust 중급 (2) - 모듈편

Rust 프로젝트가 커지면 파일을 나누는 것만으로는 코드의 책임과 공개 범위를 분명하게 관리하기 어렵습니다. 이 강의에서는 패키지·크레이트·모듈의 차이부터 파일 배치, 경로, 공개 범위, 라이브러리와 실행 파일의 분리, 재공개, 워크스페이스까지 차근차근 다룹니다.

6명 이 수강하고 있어요.

난이도 중급이상

수강기한 무제한

수강 후 이런걸 얻을 수 있어요

  • 패키지·크레이트·모듈의 차이를 구분하고 Rust 프로젝트 구조를 정확하게 읽을 수 있습니다.

  • mod 선언으로 여러 파일을 모듈 트리에 연결할 수 있습니다.

  • 라이브러리와 실행 파일의 역할을 나누어 테스트하기 쉬운 프로젝트를 구성할 수 있습니다.

  • 역할과 변경 이유를 기준으로 모듈과 크레이트의 경계를 설계할 수 있습니다.

  • 비공개 모듈을 연결하고 필요한 타입과 함수만 재공개하는 라이브러리를 완성할 수 있습니다.

파일만 나누던 코드를, 경계가 보이는 Rust 프로젝트로

프로젝트가 커지면 코드가 어느 파일에 있는지만 알아서는 부족합니다. 각 코드가 어떤 책임을 맡는지, 어디까지 공개해야 하는지, 여러 실행 파일이 어떤 코드를 함께 사용해야 하는지도 결정해야 합니다.

이 강의에서는 자주 혼동하는 패키지·크레이트·모듈의 차이부터 시작합니다. 이어서 모듈 트리와 파일 배치, crate::·self::·super:: 경로, use, 공개 범위, 라이브러리와 실행 파일의 분리, pub use를 이용한 재공개, Cargo 워크스페이스를 차례로 배웁니다.

마지막에는 model·parser·report 모듈의 내부 구현을 감추고, 외부 사용자가 필요한 타입과 함수만 간결한 경로로 사용할 수 있는 라이브러리를 직접 완성합니다. 문법을 외우는 데 그치지 않고, 변경하기 쉽고 사용하기 편한 Rust 프로젝트의 경계를 설계하는 것이 이 강의의 목표입니다.

이런 내용을 배워요

패키지·크레이트·모듈을 정확하게 구분해요

Cargo.toml이 관리하는 패키지, 컴파일 단위인 크레이트, 코드를 역할별로 묶는 모듈의 차이를 배웁니다. src/lib.rs, src/main.rs, src/bin이 각각 어떤 크레이트의 시작점이 되는지 살펴보고, 하나의 패키지 안에 라이브러리와 여러 실행 파일을 구성하는 방법을 이해합니다.

하나의 패키지 안에서도 라이브러리와 각 실행 파일은 서로 다른 크레이트로 컴파일됩니다.

모듈 트리와 파일 배치를 연결해서 이해해요

mod 선언이 파일을 단순히 복사하는 문법이 아니라 모듈 트리에 코드를 연결하는 선언임을 배웁니다. 인라인 모듈, parser.rs, parser/mod.rs의 차이를 살펴보고, 부모·자식 모듈의 논리적인 구조와 실제 소스 파일의 배치를 구분합니다.


모듈 트리는 코드의 논리적인 관계를 나타내고, 파일은 각 모듈의 코드를 저장합니다.

종합 실습으로 공개 API를 완성해요

이미 구현된 model, parser, report 코드를 비공개 모듈로 연결하고, 외부에 필요한 타입과 함수만 크레이트 루트에 재공개합니다. 테스트 실패 메시지를 하나씩 해결하면서 내부 구조는 감추고 사용하기 쉬운 라이브러리 API를 직접 완성합니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): macOS, Linux, Windows

  • 사용 도구: Git, VS Code, Rustup, Cargo

  • PC 사양: 특별한 고사양 PC 불필요

학습 자료

  • 온라인 학습 교재

  • 깃허브 소스코드

선수 지식 및 유의사항

  • 우아한 고성능 프로그래밍 언어 Rust 입문 및 활용 강의 수강을 권장합니다.

  • 이 강의는 우아한 Rust 중급 시리즈의 일부입니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • Rust 입문 과정을 마쳤지만 패키지·크레이트·모듈의 차이가 아직 헷갈리는 분

  • 프로젝트가 커질 때 파일과 모듈을 어떤 기준으로 나눌지 고민하는 분

  • mod, use, pub을 사용하면서 경로와 공개 범위 오류를 자주 만나는 분

  • 내부 구현을 감추고 사용하기 쉬운 라이브러리 API를 설계하고 싶은 분

선수 지식,
필요할까요?

  • Rust 기초 문법 지식

  • Rust 소유권 기본 개념

안녕하세요
김대현입니다.

커리어인증

2,120

수강생

169

수강평

27

답변

4.7

강의 평점

8

강의

함수형 프로그래밍에 관심이 많은 백엔드 개발자입니다. 카카오 개발팀장, NHN 수석, LINE+ 리드를 지내며 개발팀 리딩을 했고, 디노티시아라는 AI스타트업에서 개발팀장으로 일하며 Rust로 프로젝트를 진행했습니다.

커리큘럼

전체

10개 ∙ (54분)

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!

김대현님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

얼리버드 할인 중

₩7

25%

₩11,000

평생교육이용권 지원 강의