unanimous0

[RUST 2-1] Cargo & Crates 본문

RUST

[RUST 2-1] Cargo & Crates

unanimous0 2025. 3. 6. 12:56
  • Cargo
    • 빌드 도구 & 패키지 관리자 (파이썬의 pip, Node.js의 npm)
    • Crate 관리 기능 : 단순히 크레이트를 추가하는 거싱 아닌 크레이트의 다른 의존 관계 크레이트도 파악해 한 번에 다운로드 진행
    • 자신이 만든 크레이트를 crates.io에 등록할 수 있음
      • crates.io : 전 세계의 러스트 이용자가 만든 크레이트를 등록하거나 다운로드 할 수 있는 웹 서비스
    • Cargo의 주요 기능
Cargo 기능 명령
프로젝트 및 템플릿 생성 cargo new 프로젝트이름
프로젝트 빌드 cargo build
프로젝트 실행 cargo run
프로젝트 내의 러스트 문법 체크 cargo check
프로젝트 테스트 cargo test
문서 생성 cargo doc
라이브러리 공개 cargo publish

 

 

  • Cargo.toml (Manifest file)
    • [cargo new 프로젝트명]으로 새로운 프로젝트를 만들면 프로젝트 루트 디렉터리에 "Cargo.toml" 파일이 생성됨
    • Cargo.toml : "매니페스트 파일" : 러스트 프로젝트의 기본 정보 및 설정 정보가 저장되며, 이 파일에 크레이트 의존 관계도 함께 기록됨
      • Manifest File : 컴퓨팅에서 집합의 일부 또는 논리정연한 단위인 파일들의 그룹을 위한 메타데이터를 포함하는 파일 (Ex. 컴퓨터 프로그램의 파일들은 이름, 버번, 라이센스, 프로그램의 구성 파일들을 갖춤)
        사용하려는 크레이트/라이브러리는 매니페스트 파일인 Cargo.toml 중 'dependencies'라는테이블에 크레이트 이름과 필요한 버전을 기입하면 됨
      • TOML 형식 : TOML은 설정 파일 작성을 위한 언어 (가독성이 높은 것이 특징으로 필요한 최소한의 기능만 갖추고 있음) 
        • 빌드 명령 : cargo build & cargo run
          • "cargo run"은 엄밀히 말해 프로젝트를 빌드하는 명령이 아님
          • 프로젝트가 빌드되어야 실행이 되기 때문에 빌드 작업이 이루어지는 것 뿐
          • cargo run으로 한 번 빌드된 프로젝트는 target/debug 안에 실행 바이너리가 생성되므로 이후에는 빌드 없이 실행 가능 (물론 소스 코드를 수정한 경우에는 다시 빌드한 뒤 실행됨)
          • cargo build는 순수한 빌드를 위해 실행됨
          • cargo build --release 옵션으로 빌드를 실행하면 target/release 디렉터리에 실행 바이너리가 생성되며, 최적화도 기본적으로 수행하므로 실행 바이너리의 용량이 더 작아지고 속도도 빨라짐
# 프로젝트 기본 정보를 아래에 기입
[package]
name = "test_rust"
version = "0.1.0"
edition = "2021"

# 의존 크레이트(라이브러리)를 아래에 기입
[dependencies]
num-bigint = "0.4"

 

 

  • 크레이트 모듈 사용법
    • 기본 사용법 (파이썬의 from ... import ... 와 비슷함)
      • use 크레이트명::모듈;
      • use 크레이트명::모듈1::모듈1-1;
      • use 크레이트명::{모듈A, 모듈B};