rust cargo使用

簡介

Cargo 是 Rust 的構建系統和包管理工具。

主要負責三個工作:

  • 構建build代碼
  • 下載你代碼 依賴dependencies包裝箱crate
  • 編譯 你的源碼包裝箱crate

查看cargo是否被正確安裝

cargo --version

項目的目錄結構

要使用cargo工具,項目的目錄結構需要如下組織:

project_name
|-  src                     // 放置源文件的目錄
    |- main.rs / lib.rs     // 源文件
|-  Cargo.toml              // Cargo的配置文件

Cargo.toml

toml

  • 要使用cargo工具,必須在項目的根目錄下建有其配置文件。
  • TOML(Tom’s Obvious Minimal Language)格式。簡單理解就是ini的進化版。

注意: Cargo.toml的C是大寫

文件預覽

Cargo.toml

[package]                   // 表明下面的語句用來配置一個包
name = "project_name"       // 項目名
version = "0.0.1"           // 版本
authors = ["Your name <[email protected]>"] // 作者

[dependencies]              // 依賴 (如果有)
rand = “^0.3.0”             // 依賴的外部包裝箱,以及其需要版本

包裝箱 crate

  • 項目除了自己編寫的源碼外,還能依賴 dependencises 外部包裝箱 crate 以及其 所要求的版本。
  • 包裝箱 crate 是一個 Rust 代碼的包。類似於其他語言的庫 library 或者 package

包裝箱的版本

Cargo理解語義化版本,它是一個編寫版本號的標準。

  • “^0.3.0” 代表”任何兼容0.3.0的版本”
  • “0.3.0” 代表”^0.3.0的簡寫”
  • “=0.3.0” 代表”只使用0.3.0的版本”
  • 也可以指定版本範圍

具體細節可以參考 cargo文檔

Cargo.lock

依賴”^0.3.0”獲得了兼容的最新版本,如0.3.14。但過了一段時間後推出了兼容的0.3.15版本修復了0.3.14的bug的同時,卻包含着破壞現有代碼的迴歸缺陷(regression)。這可如何是好?

Cargo.lock 閃亮登場

當你第一次build項目時,Cargo 會查找所有符合你的 依賴dependencies 要求的版本,並記錄到到 Cargo.lock 文件裏。當你在未來再次
build 你的項目時,Cargo 會注意到 Cargo.lock 的存在,並接着使用 Cargo.lock 中指定的版本而不是再次去做 查明和記錄版本 的工作。這讓你有了一個可重複的自動構建。換句話說,項目會保持在依賴0.3.14的版本。直到我們顯式的在 Cargo.toml 中升級。

文件預覽

Cargo.lock

...

[[package]]
name = "libc"
version = "0.2.36"
source = "registry+https://github.com/rust-lang/crates.io-index"

[[package]]
name = "rand"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
 "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
 "libc 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
 "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
]

...

Cargo的構建(build)和運行(run)

在創建好項目的 目錄結構Cargo.toml 後,就可以使用cargo來構建和運行項目了。

構建 build

項目根目錄 下輸入 cargo build 就可構建項目(編譯項目),
./target/debug/project_name 中找到編譯後的 可執行文件(exe) 運行。

cargo build

cargo build 默認是以 debug 方式編譯,在項目 release 時,使用 --release 參數編譯最終版本。

cargo build --release

運行 run

也可以在 項目根目錄 下使用 cargo run 一個步驟來代替上述的 cargo build + run exe 兩個步驟。

cargo run

Cargo的創建(new)

除了可以手動創建 目錄結構Cargo.toml 外,可以使用 Cargo new 來自動創建。在執行此命令的目錄下創建名爲project_name的目錄,包含Cargo.toml,自動創建了 src/main.rs 。並且,還自動創建了git的倉庫。

cargo new project_name --bin

其中 --bin 表示是新建一個可執行文件。

參考

發佈了59 篇原創文章 · 獲贊 20 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章