#TheBook #Rust https://doc.rust-jp.rs/book-ja/ch14-00-more-about-cargo.html ## リリースプロファイルでビルドをカスタマイズする - [[リリースプロファイル]] ```toml [profile.dev] opt-level = 0 [profile.release] opt-level = 3 ``` ## Crates.ioにクレートを公開する - [[ドキュメンテーションコメント]] - `cargo doc`でドキュメント生成 - `cargo test`で[[ドキュメンテーションコメント]]のコードも確認できる ```rust /// 与えられた数値に1を足す /// /// # Examples /// /// ``` /// let five = 5; /// assert_eq!(6, doctest::add_one(five)); /// ``` pub fn add_one(x: i32) -> i32 { x + 1 } ``` の場合は ```rust let five = 5; assert_eq!(6, doctest::add_one(five)); ``` をテストコードとして実行してくれる。 14-3のコード、`super::`いるよな... ```rust pub mod utils { use super::kinds::*; /// Combines two primary colors in equal amounts to create a secondary color. pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor { SecondaryColor::Green } } ``` `lib.rs`の冒頭に以下でreexportしてやるとdocもトップページに出てくる。 ```rust pub use kinds::PrimaryColor; pub use kinds::SecondaryColor; pub use utils::mix; ``` `main.rs`で使う側も ```rust use doctest::kinds::PrimaryColor; use doctest::utils::mix; ``` となっていたのが ```rust use doctest::{mix, PrimaryColor}; ``` とシンプルに..!! `pub use`は大事 > [!todo] > [[クレート]]の公開はいずれやるときに... - `cargo yank`で今後インストールされる[[クレート]]からは除外できる - 既にインストールされていたら無理 - 削除はされない ## Cargoのワークスペース ```console mkdir workspace-test cd workspace-test ``` `workspace-test/Cargo.toml` ```toml [workspace] members = [ "adder", ] ``` ```console $ cargo new --bin adder $ tree  . ├──  adder │ ├──  Cargo.toml │ └──  src │ └──  main.rs └──  Cargo.toml $ cargo build $ tree -L 2  . ├──  adder │ ├──  Cargo.toml │ └──  src ├──  Cargo.lock ├──  Cargo.toml └──  target ├──  CACHEDIR.TAG └──  debug ``` `extern`の代わりは`use`なんだなあ... ```diff - extern crate add_one; + use add_one; ``` `extern`や`use`なしでも動いた。 ```rust // 以下はどちらも不要だった // extern crate add_one; // use add_one; fn main() { let num = 10; println!("{} -> {}", num, add_one::add_one(num)) } ``` `cargo run -p adder`ではなく`cargo run`でも動いた。 - [[ワークスペースは最上位階層にあるただ1つのCargo.lockファイルを共有する]] - [[ワークスペースのあるパッケージに追加した依存関係は別のパッケージでは使えない]] [[Scoop]]で[[rustup]]をインストールした場合 `cargo install` でインストールしたバイナリは `C:\Users\syoum\scoop\persist\rustup-msvc\.cargo\bin` 配下に保管される。