Rust의 고유한 기능
프로그래밍 언어가 프로젝트에 적합한지 확인하려면, 기능 및 제한 사항에 대해 알고 있어야 합니다. 그런 다음 가능한 언어를 비교하고 가장 적합한 언어를 선택할 수 있습니다.
이 단원에서는 Rust의 몇 가지 기능 및 제한 사항을 검토합니다.
- Rust 모듈 시스템: 모듈, 크레이트, 경로
- Rust 표준 라이브러리 및 타사 크레이트
- Rust Cargo 도구 및 종속성 관리자
- Rust는 언제 사용하나요?
Rust 모듈 시스템을 사용한 코드 관리
Rust는 코드를 관리하고 구성하는 데 도움이 되는 기능 모음을 제공합니다. 이러한 기능을 Rust 모듈 시스템이라고 합니다. 시스템은 해당 항목에 사용할 ‘크레이트’, ‘모듈’, ‘경로’, 도구로 구성됩니다.
크레이트: Rust 크레이트는 컴파일 단위입니다. Rust 컴파일러에서 실행할 수 있는 가장 작은 코드 부분입니다. 크레이트에 있는 코드는 이진 실행 파일이나 라이브러리를 생성하기 위해 함께 컴파일됩니다. Rust에서는 크레이트만이 다시 사용할 수 있는 단위로 컴파일됩니다. 크레이트는 명명되지 않은 암시적 최상위 모듈이 있는 Rust 모듈의 계층 구조를 포함합니다.
모듈: Rust 모듈은 크레이트 내에서 개별 코드 항목의 범위를 관리하도록 하여 프로그램을 구성하는 데 도움이 됩니다. 관련 코드 항목 또는 함께 사용되는 항목을 동일한 모듈로 그룹화 할 수 있습니다. 순환 코드 정의는 다른 모듈에 걸쳐 있을 수 있습니다.
경로: Rust에서 경로를 사용하여 코드의 이름 항목을 지정할 수 있습니다. 예를 들어, 경로는 벡터, 코드 함수, 모듈 등의 데이터 정의가 될 수 있습니다. 모듈 기능을 사용하면 경로에 대한 개인 정보를 제어할 수도 있습니다. 공개적으로 액세스할 수 있는 코드 부분 및 전용 파트를 지정할 수 있습니다. 이 기능을 통해 구현 세부 정보를 숨길 수 있습니다.
Rust 크레이트 및 라이브러리 사용
Rust 표준 라이브러리 std
에는 Rust 프로그램의 기본 정의 및 작업에 사용할 수 있는 코드가 포함되어 있습니다. 이 라이브러리에는 String
및 Vec<T>
와 같은 핵심 데이터 형식, Rust 기본 형식에 대한 작업, 일반적으로 사용되는 매크로 함수를 위한 코드, 입력 및 출력 작업에 대한 지원, 기타 여러 기능 영역이 포함되어 있습니다.
Rust 프로그램에서 사용할 수 있는 수만 개의 라이브러리와 타사 크레이트가 있으며, 대부분의 경우 Rust의 타사 크레이트 리포지토리인 crates.io를 통해 액세스할 수 있습니다. 나중에 프로젝트에서 이러한 크레이트에 액세스하는 방법을 배우게 되지만 지금은 프로그래밍 연습에 사용되는 몇 가지 크레이트만 살펴봅니다.
- std -Rust 표준 라이브러리. Rust 연습에서는 다음 모듈을 확인할 수 있습니다.
- std:: collections -
HashMap
등의 컬렉션 형식에 대한 정의 - std:: env - 사용자 환경으로 작업하기 위한 함수.
- std:: fmt - 출력 형식을 제어하는 기능.
- std:: fs - 파일 시스템을 사용하기 위한 함수.
- std:: io - 입/출력 작업을 위한 정의 및 기능.
- std::path - 파일 시스템 경로 데이터 작업을 지원하는 정의 및 함수
- std:: collections -
- structopt - 명령줄 인수를 쉽게 구문 분석하기 위한 타사 크레이트입니다.
- chrono - 날짜 및 시간 데이터를 처리하는 타사 크레이트입니다.
- regex - 정규식을 사용하는 타사 크레이트입니다.
- serde - Rust 데이터 구조에 대한 Serialization 및 Deserialization 작업의 타사 크레이트입니다.
기본적으로 std
라이브러리는 모든 Rust에서 사용할 수 있습니다. 크레이트 또는 라이브러리에서 재사용 가능한 코드에 액세스하기 위해 use
키워드를 구현합니다. use
키워드를 사용하는 경우에는 프로그램의 정의 및 함수에 액세스할 수 있도록 크레이트 또는 라이브러리의 코드가 "범위로 전환"됩니다. 표준 라이브러리는 use std::fmt
에서와 같이 std
경로를 사용하여 use
문에서 액세스할 수 있습니다. 다른 크레이트나 라이브러리에는 use regex::Regex
과 같이 이름을 사용하여 액세스합니다.
Cargo를 사용하여 프로젝트 생성 및 관리
Rust 컴파일러(rustc
)를 사용하여 크레이트를 직접 만들 수 있지만 대부분의 프로젝트는 Rust 빌드 도구와 Cargo라는 종속성 관리자를 사용합니다.
Cargo는 다음을 비롯한 많은 작업을 할 수 있습니다.
cargo new
명령을 사용하여 새 프로젝트 템플릿을 만듭니다.cargo build
명령을 사용하여 프로젝트를 빌드합니다.cargo run
명령을 사용하여 프로젝트를 빌드하고 실행합니다.cargo test
명령을 사용하여 프로젝트를 테스트합니다.cargo check
명령을 사용하여 프로젝트 유형을 확인합니다.cargo doc
명령을 사용하여 프로젝트에 대한 설명서를 작성합니다.cargo publish
명령을 사용하여crates.io
에 라이브러리를 게시합니다.- 크레이트 이름을 Cargo.toml 파일에 추가하여 프로젝트에 종속 파일을 추가합니다.
Rust는 언제 사용하나요?
Rust 언어에는 프로젝트에 가장 적합한 언어를 선택할 때 고려해야 할 몇 가지 장점이 있습니다.
- Rust를 사용하면 C 및 C++와 같은 언어로 작성된 프로그램 및 라이브러리의 성능 및 리소스 사용을 제어하면서, 기본적으로 메모리 안전 상태를 유지할 수 있습니다. 이 수준의 제어는 일반적인 버그의 전체 클래스를 제거합니다.
- Rust에는 개발자가 프로그램의 다양한 고정 요소를 코드로 인코딩할 수 있는 풍부한 추상화 기능이 있습니다. 그런 후 규칙 또는 설명서에 의존하지 않고 컴파일러에서 코드가 확인됩니다. 이 기능으로 인해 "컴파일하면 작동한다"라는 느낌을 받을 수 있습니다.
- Rust에는 코드를 빌드, 테스트, 문서화 및 공유하기 위한 기본 제공 도구와 타사 도구 및 라이브러리의 풍부한 에코시스템이 포함되어 있습니다. 이러한 도구를 사용하면 일부 언어에서는 어려운 일부 작업(예: 종속성 빌드)을 Rust에서 쉽고 생산적으로 처리할 수 있습니다.
지식 점검
다음 질문에 대답하여 배운 내용을 확인하세요. 각 질문에 대해 하나의 대답을 선택한 다음, 답변 확인을 선택합니다.