Cargo:Rust 的構(gòu)建系統(tǒng)和包管理器
Cargo 是 Rust 的構(gòu)建系統(tǒng)和包管理器,是 Rust 開發(fā)生態(tài)系統(tǒng)的核心工具。絕大多數(shù) Rust 開發(fā)者(Rustacean)都使用 Cargo 來管理項(xiàng)目,因?yàn)樗梢宰詣?dòng)處理許多復(fù)雜的任務(wù)。
Rust 入門:Hello World 程序
Rust 安裝指南(Mac)
Cargo 的核心功能
Cargo 主要負(fù)責(zé)以下任務(wù):
- · ?? 構(gòu)建代碼:編譯 Rust 源代碼
- · ?? 依賴管理:下載和管理第三方庫(稱為 依賴)
- · ?? 項(xiàng)目管理:創(chuàng)建和組織項(xiàng)目結(jié)構(gòu)
- · ?? 測(cè)試運(yùn)行:執(zhí)行單元測(cè)試和集成測(cè)試
檢查 Cargo 安裝
由于 Cargo 隨 Rust 一起安裝,你可以通過以下命令檢查是否正確安裝:
cargo --version
預(yù)期輸出示例:
cargo 1.90.0 (840b83a10 2025-07-30)
如果看到版本號(hào),說明 Cargo 已正確安裝!如果出現(xiàn) command not found 錯(cuò)誤,請(qǐng)參考 Rust 安裝文檔重新安裝。
使用 Cargo 創(chuàng)建項(xiàng)目
讓我們使用 Cargo 創(chuàng)建一個(gè)新項(xiàng)目,看看它與之前手動(dòng)創(chuàng)建的 "Hello, world!" 項(xiàng)目有什么不同。
創(chuàng)建新項(xiàng)目
在任何操作系統(tǒng)上,都可以使用以下命令:
cargo new hello_cargo
cd hello_cargo
這個(gè)命令會(huì):
- · 創(chuàng)建名為
hello_cargo 的新目錄 - · 在該目錄中初始化一個(gè)完整的 Rust 項(xiàng)目
- · 自動(dòng)設(shè)置 Git 版本控制(如果不在已有的 Git 倉庫中)
項(xiàng)目結(jié)構(gòu)
Cargo 會(huì)生成以下項(xiàng)目結(jié)構(gòu):
hello_cargo/
├── Cargo.toml # 項(xiàng)目配置文件
├── .gitignore # Git 忽略文件
├── .git/ # Git 倉庫(如果適用)
└── src/
└── main.rs # 源代碼文件
Cargo.toml 配置文件
Cargo.toml 是項(xiàng)目的核心配置文件:
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2024"
[dependencies]
配置說明:
| |
[package] | |
name | |
version | |
edition | |
[dependencies] | |
?? TOML 格式:Cargo 使用 TOML(Tom's Obvious, Minimal Language)格式,這是一種簡單易讀的配置文件格式。
源代碼文件
src/main.rs 包含默認(rèn)的 Hello World 程序:
fn main() {
println!("Hello, world!");
}
Cargo 項(xiàng)目的優(yōu)勢(shì)
與手動(dòng)創(chuàng)建的項(xiàng)目相比,Cargo 項(xiàng)目具有以下優(yōu)勢(shì):
- · ?? 標(biāo)準(zhǔn)化結(jié)構(gòu):所有源代碼放在
src/ 目錄 - · ?? 配置管理:使用
Cargo.toml 統(tǒng)一管理項(xiàng)目配置 - · ?? 版本控制:自動(dòng)初始化 Git 倉庫
- · ?? 項(xiàng)目整潔:根目錄只放置配置文件和文檔
轉(zhuǎn)換現(xiàn)有項(xiàng)目
如果你有一個(gè)非 Cargo 項(xiàng)目(如之前的 Hello World),可以輕松轉(zhuǎn)換:
- 2. 運(yùn)行
cargo init 自動(dòng)生成 Cargo.toml
# 在現(xiàn)有項(xiàng)目目錄中
cargo init
構(gòu)建和運(yùn)行 Cargo 項(xiàng)目
現(xiàn)在讓我們學(xué)習(xí)如何使用 Cargo 構(gòu)建和運(yùn)行項(xiàng)目。Cargo 提供了多個(gè)命令來滿足不同的開發(fā)需求。
cargo build - 構(gòu)建項(xiàng)目
在項(xiàng)目目錄中運(yùn)行構(gòu)建命令:
cd hello_cargo
cargo build
輸出示例:
Compiling hello_cargo v0.1.0 (/Users/jianguo/Desktop/rust/rust/hello_cargo)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.65s
構(gòu)建結(jié)果:
- · 創(chuàng)建可執(zhí)行文件:
target/debug/hello_cargo(Windows 上是 target\debug\hello_cargo.exe) - · 生成
Cargo.lock 文件:記錄依賴的確切版本 - · 所有構(gòu)建產(chǎn)物都放在
target/ 目錄中
運(yùn)行構(gòu)建的程序
# Linux/macOS
./target/debug/hello_cargo
# Windows
.\target\debug\hello_cargo.exe
輸出:
Hello, world!
cargo run - 一鍵構(gòu)建并運(yùn)行
cargo run 命令將構(gòu)建和運(yùn)行合并為一步:
cargo run
輸出示例:
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/hello_cargo`
Hello, world!
智能構(gòu)建:
- · 如果代碼未修改,直接運(yùn)行現(xiàn)有的可執(zhí)行文件
- · 如果代碼已修改,先重新構(gòu)建再運(yùn)行
cargo check - 快速檢查
cargo check 只檢查代碼是否能夠編譯,不生成可執(zhí)行文件:
cargo check
輸出示例:
Checking hello_cargo v0.1.0 (file:///projects/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.32 secs
使用場(chǎng)景:
- · 開發(fā)過程中快速驗(yàn)證代碼正確性
Cargo 命令總結(jié)
| | |
cargo new <項(xiàng)目名> | | |
cargo build | | |
cargo run | | |
cargo check | | |
cargo init | | 轉(zhuǎn)換現(xiàn)有項(xiàng)目 |
跨平臺(tái)優(yōu)勢(shì)
Cargo 的一個(gè)重要優(yōu)勢(shì)是跨平臺(tái)一致性:無論在 Linux、macOS 還是 Windows 上,命令都完全相同。這大大簡化了開發(fā)和協(xié)作流程。
發(fā)布構(gòu)建
cargo build --release
當(dāng)項(xiàng)目準(zhǔn)備發(fā)布時(shí),使用優(yōu)化構(gòu)建:
cargo build --release
發(fā)布構(gòu)建特點(diǎn):
| | | | |
| target/debug/ | | | |
| target/release/ | | | |
使用建議:
- · 開發(fā)階段:使用 debug 構(gòu)建,編譯快,便于調(diào)試
- · 性能測(cè)試:使用 release 構(gòu)建,獲得真實(shí)的性能數(shù)據(jù)
- · 最終發(fā)布:使用 release 構(gòu)建,提供最佳用戶體驗(yàn)
Cargo 的價(jià)值
簡單項(xiàng)目 vs 復(fù)雜項(xiàng)目
雖然對(duì)于簡單的 Hello World 項(xiàng)目,Cargo 可能看起來"大材小用",但它的真正價(jià)值在于:
- · ?? 可擴(kuò)展性:項(xiàng)目復(fù)雜度增加時(shí),Cargo 的優(yōu)勢(shì)逐漸顯現(xiàn)
- · ?? 依賴管理:自動(dòng)處理第三方庫的下載、編譯和版本管理
- · ??? 構(gòu)建優(yōu)化:智能的增量編譯和緩存機(jī)制
- · ?? 團(tuán)隊(duì)協(xié)作:標(biāo)準(zhǔn)化的項(xiàng)目結(jié)構(gòu)和構(gòu)建流程
實(shí)際工作流程
在實(shí)際開發(fā)中,通常的工作流程是:
# 1. 克隆項(xiàng)目
git clone https://github.com/user/rust-project.git
cd rust-project
# 2. 構(gòu)建項(xiàng)目
cargo build
# 3. 運(yùn)行項(xiàng)目
cargo run
# 4. 開發(fā)過程中持續(xù)檢查
cargo check
進(jìn)一步學(xué)習(xí)
想要深入了解 Cargo 的更多功能,請(qǐng)查閱:
總結(jié)
通過學(xué)習(xí) Cargo,你已經(jīng)掌握了:
- 1. ? 項(xiàng)目創(chuàng)建:使用
cargo new 創(chuàng)建標(biāo)準(zhǔn)化項(xiàng)目 - 2. ? 構(gòu)建管理:理解 debug 和 release 構(gòu)建的區(qū)別
- 3. ? 開發(fā)工具:熟悉
build、run、check 命令 - 4. ? 項(xiàng)目結(jié)構(gòu):了解 Cargo 項(xiàng)目的標(biāo)準(zhǔn)布局
- 5. ? 配置文件:掌握
Cargo.toml 的基本配置
現(xiàn)在你已經(jīng)具備了使用 Rust 和 Cargo 開發(fā)項(xiàng)目的基礎(chǔ)知識(shí)!是時(shí)候開始構(gòu)建更有趣的程序了!??
GitCode
國內(nèi)領(lǐng)先的代碼托管平臺(tái):https:///
歡迎大家在GitCode平臺(tái)暢游,學(xué)習(xí)Rust