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

    //! обычно описывает весь крейт или модуль, /// — функцию

    1

    2

  • рабочее пространство (workspace)

    Workspace — это набор пакетов, использующих один и тот же Cargo.lock и один каталог вывода.

    можно использовать для управления несколькими модулями с одинаковой функциональностью

    они используют общий Cargo.lock и общий output dir

  • прочее

    cargo install служит для установки и использования binary crate

Источник

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

…

Расширение Cargo собственными командами

Cargo устроен так, что его можно расширять новыми подкомандами, не изменяя сам Cargo. Если бинарник в вашем $PATH называется cargo-something, его можно запустить как подкоманду Cargo командой cargo something. Такие собственные команды также показываются при запуске cargo --list. Возможность устанавливать расширения через cargo install и запускать их так же, как встроенные инструменты Cargo, — очень удобное преимущество такого устройства Cargo!

Итог

Обмен кодом через Cargo и crates.io — часть того, что делает экосистему Rust полезной для множества разных задач. Стандартная библиотека Rust невелика и стабильна, но крейты легко публиковать, использовать и улучшать по своему графику, отличному от графика языка. Не стесняйтесь выкладывать полезный вам код на crates.io — вероятно, он будет полезен и кому-то ещё!