본문 바로가기

프로그램/러스트

러스트(Rust) 언어로 프로젝트를 개발할 때의 기본적인 구조

1. 프로젝트 초기화

Rust 프로젝트를 시작하려면 Cargo라는 빌드 시스템 및 패키지 관리 도구를 사용합니다. 새로운 프로젝트를 시작하려면 아래 명령어를 사용합니다:

cargo new 프로젝트_이름

이 명령어를 실행하면 기본 디렉토리 구조와 Cargo.toml 파일이 생성됩니다.

2. 디렉토리 구조

기본적으로 생성되는 디렉토리 구조는 다음과 같습니다:

프로젝트_이름/
├── Cargo.toml
└── src/
    └── main.rs
  • Cargo.toml: 프로젝트의 메타데이터와 의존성을 관리하는 파일입니다.
  • src/main.rs: 프로젝트의 메인 소스 파일입니다. 러스트 애플리케이션의 진입점입니다.

3. Cargo.toml 파일

Cargo.toml 파일은 프로젝트의 이름, 버전, 의존성 등을 명시합니다. 예시:

[package]
name = "프로젝트_이름"
version = "0.1.0"
edition = "2021"

[dependencies]

4. src 디렉토리

모든 소스 코드는 src 디렉토리에 위치합니다. 작은 프로젝트는 src/main.rs 파일만으로 충분할 수 있지만, 규모가 커지면 모듈을 나누어 관리합니다.

모듈화 예시

src/lib.rs 파일을 추가하여 라이브러리 형태로 프로젝트를 구성할 수 있습니다.

 
프로젝트_이름/
├── Cargo.toml
└── src/
    ├── main.rs
    └── lib.rs

main.rs와 lib.rs를 함께 사용하는 예시:

src/main.rs:

 
프로젝트_이름/
├── Cargo.toml
└── src/
    ├── main.rs
    └── lib.rs

src/lib.rs:

fn main() {
    println!("Hello, world!");
    프로젝트_이름::some_function();
}

5. 빌드 및 실행

  • 빌드: cargo build
  • 실행: cargo run
  • 테스트: cargo test

6. 추가 디렉토리

프로젝트가 커짐에 따라 다음과 같은 디렉토리를 추가할 수 있습니다:

  • tests/: 통합 테스트 파일
  • benches/: 벤치마킹 코드
  • examples/: 예제 코드

예시 구조:

프로젝트_이름/
├── Cargo.toml
├── benches/
├── examples/
├── src/
│   ├── main.rs
│   └── lib.rs
└── tests/

7. 모듈과 경로

러스트에서는 모듈 시스템을 통해 코드를 구성합니다. 모듈 파일 구조 예시:

 
src/
├── main.rs
├── lib.rs
├── module_a.rs
└── module_b/
    └── mod.rs

lib.rs에서 모듈을 선언하는 방법:

 
pub mod module_a;
pub mod module_b;

module_b/mod.rs:

 
pub fn function_in_b() {
    println!("Function in module B");
}

위 구조에 따라 module_a와 module_b의 함수를 사용할 수 있습니다.

 
fn main() {
    module_a::function_in_a();
    module_b::function_in_b();
}

러스트 프로젝트 구조는 프로젝트의 복잡성과 요구사항에 따라 다를 수 있지만, 위의 기본적인 구조를 바탕으로 확장하면 됩니다.