Cargo Release Profile
cargo build 默認(rèn)使用的dev 的profile
cargo build --release 使用的release 的profile
Cargo.toml 配置文件
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
opt-level 取值從0-3, 0級(jí)別代表更快的編譯速度曼尊,不太關(guān)注執(zhí)行的速度酬诀,3代表用較慢的編譯來獲取快速的執(zhí)行速度,適用于生產(chǎn)環(huán)境
發(fā)布Crate到Crate.io
///: 三個(gè)斜杠的注釋來注釋代碼骆撇,提供更好的可讀性瞒御,支持markdown語法
/// 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
}
執(zhí)行cargo doc,生成html的文檔在target/doc 目錄下
cargo doc --open 會(huì)生成并打開html文檔
//! # My Crate
//!
//! `my_crate` is a collection of utilities to make performing certain
//! calculations more convenient.
上面的注釋使用了//! 形式的注釋神郊,一般放在lib.rs的最開始的部分肴裙,代表的是整個(gè)crate的注釋,與///類型注釋的使用場景有所區(qū)別
要發(fā)布一個(gè)crate
- 先要在crate.io上申請一個(gè)賬號(hào)
- 然后執(zhí)行涌乳, $ cargo login <TOKEN> 登錄
- 修改cargo.toml 蜻懦,內(nèi)容形如
[package]
name = "guessing_game"
version = "0.1.0"
edition = "2018"
description = "A fun game where you guess what number the computer has chosen."
license = "MIT OR Apache-2.0"
[dependencies]
- 執(zhí)行 cargo publish
標(biāo)記某個(gè)版本的crate為不可用
如果某個(gè)版本的crate有問題,防止別人繼續(xù)從crate.io上添加為依賴并拉取夕晓,命令形如
$ cargo yank --vers 1.0.1
Cargo workspace
比較大的項(xiàng)目宛乃,分拆成多個(gè)包,類似于java中父級(jí)maven下面有多個(gè)module
├── Cargo.lock
├── Cargo.toml
├── add-one
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
├── adder
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── target
父級(jí)的cargo.toml 內(nèi)容如下:
[workspace]
members = [
"adder",
"add-one",
]