Rust의 고유한 기능

완료됨

프로그래밍 언어가 프로젝트에 적합한지 확인하려면, 기능 및 제한 사항에 대해 알고 있어야 합니다. 그런 다음 가능한 언어를 비교하고 가장 적합한 언어를 선택할 수 있습니다.

이 단원에서는 Rust의 몇 가지 기능 및 제한 사항을 검토합니다.

  • Rust 모듈 시스템: 모듈, 크레이트, 경로
  • Rust 표준 라이브러리 및 타사 크레이트
  • Rust Cargo 도구 및 종속성 관리자
  • Rust는 언제 사용하나요?

Rust 모듈 시스템을 사용한 코드 관리

Rust는 코드를 관리하고 구성하는 데 도움이 되는 기능 모음을 제공합니다. 이러한 기능을 Rust 모듈 시스템이라고 합니다. 시스템은 해당 항목에 사용할 ‘크레이트’, ‘모듈’, ‘경로’, 도구로 구성됩니다.

  • 크레이트: Rust 크레이트는 컴파일 단위입니다. Rust 컴파일러에서 실행할 수 있는 가장 작은 코드 부분입니다. 크레이트에 있는 코드는 이진 실행 파일이나 라이브러리를 생성하기 위해 함께 컴파일됩니다. Rust에서는 크레이트만이 다시 사용할 수 있는 단위로 컴파일됩니다. 크레이트는 명명되지 않은 암시적 최상위 모듈이 있는 Rust 모듈의 계층 구조를 포함합니다.

  • 모듈: Rust 모듈은 크레이트 내에서 개별 코드 항목의 범위를 관리하도록 하여 프로그램을 구성하는 데 도움이 됩니다. 관련 코드 항목 또는 함께 사용되는 항목을 동일한 모듈로 그룹화 할 수 있습니다. 순환 코드 정의는 다른 모듈에 걸쳐 있을 수 있습니다.

  • 경로: Rust에서 경로를 사용하여 코드의 이름 항목을 지정할 수 있습니다. 예를 들어, 경로는 벡터, 코드 함수, 모듈 등의 데이터 정의가 될 수 있습니다. 모듈 기능을 사용하면 경로에 대한 개인 정보를 제어할 수도 있습니다. 공개적으로 액세스할 수 있는 코드 부분 및 전용 파트를 지정할 수 있습니다. 이 기능을 통해 구현 세부 정보를 숨길 수 있습니다.

Rust 크레이트 및 라이브러리 사용

Rust 표준 라이브러리 std에는 Rust 프로그램의 기본 정의 및 작업에 사용할 수 있는 코드가 포함되어 있습니다. 이 라이브러리에는 StringVec<T>와 같은 핵심 데이터 형식, Rust 기본 형식에 대한 작업, 일반적으로 사용되는 매크로 함수를 위한 코드, 입력 및 출력 작업에 대한 지원, 기타 여러 기능 영역이 포함되어 있습니다.

Rust 프로그램에서 사용할 수 있는 수만 개의 라이브러리와 타사 크레이트가 있으며, 대부분의 경우 Rust의 타사 크레이트 리포지토리인 crates.io를 통해 액세스할 수 있습니다. 나중에 프로젝트에서 이러한 크레이트에 액세스하는 방법을 배우게 되지만 지금은 프로그래밍 연습에 사용되는 몇 가지 크레이트만 살펴봅니다.

  • std -Rust 표준 라이브러리. Rust 연습에서는 다음 모듈을 확인할 수 있습니다.
    • std:: collections - HashMap 등의 컬렉션 형식에 대한 정의
    • std:: env - 사용자 환경으로 작업하기 위한 함수.
    • std:: fmt - 출력 형식을 제어하는 기능.
    • std:: fs - 파일 시스템을 사용하기 위한 함수.
    • std:: io - 입/출력 작업을 위한 정의 및 기능.
    • std::path - 파일 시스템 경로 데이터 작업을 지원하는 정의 및 함수
  • 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에서 쉽고 생산적으로 처리할 수 있습니다.

지식 점검

다음 질문에 대답하여 배운 내용을 확인하세요. 각 질문에 대해 하나의 대답을 선택한 다음, 답변 확인을 선택합니다.

1.

Rust와 함께 사용할 경우의 장점은 무엇인가요?

2.

Rust 코드는 어떻게 실행되나요?

3.

Cargo에서 수행할 수 없는 작업의 예는 무엇인가요?