Rust - Basic - 13 - Cargo Crates.io

Cargo Crates.io

이해

  • 컴파일 최적화 옵션
    // Filename: Cargo.toml
    // opt-level은 최적화 정도(0~3)이며 높을수록 컴파일 시간은 길고 실행 효율은 높습니다.
    [profile.dev]
    opt-level = 0
    
    [profile.release]
    opt-level = 3
    
  • Doc String
    //! # My Crate
    //!
    //! `my_crate` is a collection of utilities to make performing certain
    //! calculations more convenient.
    
    /// Adds one to the number given.
    ///
    /// # Examples
    ///
    /// ```
    /// let arg = 5;
    /// let answer = my_crate::add_one(arg);
    ///
    /// assert_eq!(6, answer);
    /// ```
    pub fn add_one(x: i32) -> i32 {
        x + 1
    }
    
    cargo doc으로 문서를 생성합니다. //!는 보통 전체 crate 또는 module을 설명하고, ///는 보통 함수를 설명합니다. 1 2
  • 워크스페이스

    A workspace is a set of packages that share the same Cargo.lock and output directory

    같은 기능을 하는 여러 모듈을 관리할 수 있습니다. 모듈은 동일한 Cargo.lock과 output dir를 공유합니다.
  • 기타 cargo install은 binary crate를 설치하고 사용하는 데 사용합니다.

출처

https://doc.rust-lang.org/book/ch14-00-more-about-cargo.html

…

사용자 정의 명령으로 Cargo 확장하기

Cargo는 코드를 수정하지 않고도 새 하위 명령을 추가해 확장할 수 있도록 설계되었습니다. $PATH의 binary 이름이 cargo-something이면 cargo something을 실행해 Cargo 하위 명령처럼 사용할 수 있습니다. 이런 사용자 정의 명령은 cargo --list를 실행할 때도 표시됩니다. cargo install로 확장 기능을 설치한 뒤 기본 Cargo 도구처럼 실행할 수 있다는 점은 Cargo 설계의 매우 편리한 장점입니다!

요약

Cargo와 crates.io 에서 코드를 공유할 수 있다는 점은 Rust 생태계를 다양한 작업에 유용하게 만드는 요소입니다. Rust 표준 라이브러리는 작고 안정적이지만 crate는 언어와 다른 일정으로 쉽게 공유하고 사용하고 개선할 수 있습니다. 자신에게 유용한 코드를 crates.io 에 공유하는 것을 주저하지 마세요. 다른 사람에게도 유용할 가능성이 큽니다!