Rust 모듈(Module)과 패키지 관리 기초
Rust는 대규모 프로젝트에서 코드 조직과 재사용을 쉽게 하기 위해 모듈 시스템과 패키지 관리 도구인 Cargo
를 제공합니다. 이번 글에서는 Rust의 모듈 개념부터 기본적인 패키지 관리 방법까지 쉽게 이해할 수 있도록 정리했습니다.
1. Rust 모듈이란?
모듈(Module)은 관련된 함수, 구조체, 열거형, 상수 등을 그룹화하여 이름 공간을 만드는 단위입니다. 코드 충돌을 방지하고, 가독성을 높이며, 재사용성을 향상시킵니다.
2. 모듈 선언과 사용법
Rust에서 모듈은 mod
키워드로 선언합니다. 한 파일 내에 모듈을 선언하거나, 별도의 파일 또는 폴더로 분리해 관리할 수 있습니다.
// main.rs
mod greetings;
fn main() {
greetings::hello();
}
// greetings.rs
pub fn hello() {
println!("안녕하세요, Rust 모듈!");
}
위 예제에서 greetings
모듈을 별도 파일로 관리하며, pub
키워드로 함수의 공개 범위를 지정했습니다.
3. 하위 모듈과 경로(Path) 지정
모듈 안에 또 다른 하위 모듈을 선언할 수 있습니다. 하위 모듈은 상위 모듈 내에서 계층 구조를 형성합니다.
// lib.rs 또는 main.rs
mod animals {
pub mod dog {
pub fn bark() {
println!("멍멍!");
}
}
}
fn main() {
animals::dog::bark();
}
4. Cargo와 패키지 관리
Rust 공식 패키지 관리자 Cargo
는 프로젝트 생성, 빌드, 의존성 관리, 배포 등 다양한 기능을 지원합니다.
- 프로젝트 생성:
cargo new 프로젝트명
- 빌드:
cargo build
- 실행:
cargo run
- 테스트:
cargo test
- 의존성 추가:
Cargo.toml
에 라이브러리 추가
5. 외부 크레이트(Crate) 사용하기
Rust에서는 크레이트(Crate)라는 단위로 라이브러리를 관리합니다. crates.io
에서 다양한 오픈소스 라이브러리를 찾아 사용할 수 있습니다.
// Cargo.toml
[dependencies]
rand = "0.8" // 랜덤 숫자 생성 라이브러리 예시
프로젝트에서 추가한 크레이트를 다음과 같이 불러와 사용합니다.
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let n: u8 = rng.gen_range(1..=100);
println!("랜덤 숫자: {}", n);
}
결론: Rust 모듈과 패키지 관리로 체계적인 코드 작성하기
Rust의 모듈 시스템과 Cargo 패키지 관리 도구를 활용하면 프로젝트 규모가 커져도 효율적이고 깔끔한 코드 구성이 가능합니다. 모듈로 코드 영역을 분리하고, Cargo로 라이브러리 의존성을 관리해 보세요. 꾸준히 연습하다 보면 자연스럽게 Rust 개발 생산성이 향상됩니다.