Rust기초알기(3) - 기본 문법
3.1 변수와 데이터 타입
3.2 제어문 (조건문, 반복문)
3.3 함수 정의와 호출
3.4 모듈과 패키지
3.5 주석
[목차] Rust Programming - Rust 기초 알기 목차.Zip
#Rust프로그래밍 #Rust언어기초 #Rust기초문법 #Rust기초알기
Rust기초 알기 - 3.4 모듈과 패키지
Rust에서는 패키지, 크레이트, 모듈이라는 세 가지 중요한 개념이 있습니다. 이들은 코드 조직화, 재사용성 및 의존성 관리를 위해 사용됩니다.
Rust의 이들 개념은 다른 언어와 마찬가지로 코드 조직화 및 구조화 기능을 최대한 활용하여 프로젝트 관리와 프로그램의 유지보수 효율성을 높이는 방법 입니다.
■ 패키지 (Package):
- 패키지는 독립적으로 빌드, 테스트, 배포되는 단위입니다.
- 패키지는 코드를 배포하고 공유하기 위한 최상위 단위입니다.
- Rust 프로젝트는 하나 이상의 패키지로 구성될 수 있습니다.
- 패키지는 Cargo를 사용하여 관리되며, Cargo.toml 파일과 소스 코드 디렉토리로 구성됩니다.
- Cargo.toml 파일은 패키지의 메타데이터와 의존성 정보를 포함합니다.
■크레이트 (Crate):
- 크레이트는 패키지 내에서 단일 컴파일 단위를 의미합니다.
- 일반적으로, 패키지 내에는 단일 크레이트가 있지만, 여러 개의 크레이트를 가지는 복합 패키지도 가능합니다.
- 크레이트는 Rust 컴파일러에 의해 빌드되고 실행 가능한 파일, 라이브러리, 테스트 등의 형태로 사용됩니다.
- 크레이트는 src 디렉토리에 소스 코드를 포함하며, 이 코드는 모듈로 구성됩니다.
- 크레이트 내에는 main.rs (실행 가능한 크레이트의 진입점) 또는 lib.rs (라이브러리 크레이트의 진입점)와 같은 엔트리 포인트가 있습니다.
- 크레이트는 패키지의 기본 구성 요소이며, 크레이트 간의 의존성을 관리하기 위해 Cargo.toml 파일에서 선언됩니다.
일반적으로 crate는 두가지 유형이 있습니다.
실행 가능한 크레이트 (Executable Crate):
실행 가능한 크레이트는 실행할 수 있는 프로그램을 생성합니다. 주로 main.rs 파일을 엔트리 포인트로 사용합니다. main() 함수를 포함하여 프로그램의 진입점을 정의합니다. 실행 가능한 크레이트를 빌드하면 실행 가능한 바이너리 파일이 생성됩니다.
라이브러리 크레이트 (Library Crate):
라이브러리 크레이트는 재사용 가능한 코드를 포함하는 라이브러리를 생성합니다. 주로 lib.rs 파일을 엔트리 포인트로 사용합니다. 다른 크레이트에서 이 라이브러리를 의존성으로 추가하여 사용할 수 있습니다. 라이브러리 크레이트를 빌드하면 라이브러리 파일이 생성됩니다.
■모듈 (Module):
- 모듈은 코드를 논리적으로 그룹화하고 조직화하기 위한 메커니즘입니다.
- 모듈은 코드의 일부를 캡슐화하여 코드 범위를 관리하고 이름 충돌을 방지합니다.
- 모듈은 크레이트 내에서 계층적 구조로 구성될 수 있으며, mod 키워드를 사용하여 선언됩니다.
- 모듈은 소스 파일 내에서 선언될 수도 있고, 별도의 파일로 분리되어 다른 파일에서 임포트될 수도 있습니다.
- 모듈은 코드 재사용과 추상화를 위한 강력한 도구로 사용됩니다.
다음은 my_module이라는 이름의 모듈을 정의하는 Rust 코드 규격입니다.
mod my_module {
// 모듈 내용
}
1. 패키지 (Package):
Rust 프로젝트의 패키지는 Cargo를 사용하여 관리됩니다. Cargo.toml 파일과 소스 코드 디렉토리로 구성됩니다. 예를 들어, 다음은 간단한 패키지의 Cargo.toml 파일입니다:
※ 패키지의 구성 요소 : Cargo.toml 파일과 소스 코드 디렉토리
- Cargo.toml 파일은 패키지의 메타데이터와 의존성 정보를 포함하고 있으며
- 소스 코드 디렉토리에는 패키지의 모듈과 구현이 포함됩니다.
[package]
name = "my_project"
version = "0.1.0"
edition = "2021"
[dependencies]
rand = "0.8.4"
2. 크레이트 (Crate):
Rust에서 크레이트는 단일 컴파일 단위로 사용됩니다. src 디렉토리 내에 소스 코드를 포함하며, main.rs나 lib.rs와 같은 엔트리 포인트를 가지게 됩니다. 예를 들어, 다음은 src/main.rs 파일의 내용으로 실행 가능한 크레이트의 예시입니다:
fn main() {
println!("Hello, world!");
}
3. 모듈 (Module):
모듈은 코드를 논리적으로 그룹화하고 조직화하기 위한 메커니즘입니다. 예를 들어, 다음은 모듈을 사용하여 코드를 구성한 예시입니다.
다음 예시에서 my_module은 모듈을 선언하는 데 사용되었고, sub_module은 my_module의 하위 모듈입니다. sub_module의 hello() 함수를 호출하여 실행 결과로 "Hello from sub module!"이 출력됩니다.
// mod.rs 파일
mod my_module {
pub mod sub_module {
pub fn hello() {
println!("Hello from sub module!");
}
}
}
// main.rs 파일
mod my_module; // 모듈을 임포트
fn main() {
my_module::sub_module::hello();
}
'Programming' 카테고리의 다른 글
Rust기초 알기 - 4.2 소유권 규칙 (7) | 2023.06.28 |
---|---|
Rust기초 알기 - 4.1 소유자와 대여자 개념 (22) | 2023.06.27 |
Rust기초 알기 - 3.5 주석 - comment - decorator (79) | 2023.06.21 |
Rust기초 알기 - 3.3 함수 정의와 호출 (7) | 2023.06.18 |
Rust기초 알기 - 3.2 제어문 (조건문, 반복문) (21) | 2023.06.14 |
Rust기초 알기 - 3.1 변수와 데이터 타입 (9) | 2023.06.06 |
[python] Selenium - 웹페이지 Alert창 종류와 관리 (9) | 2023.05.30 |