学习笔记一—— Rust 包管理神器 Cargo 全面详解

如果你刚开始学习 Rust,你一定会在命令行中接触到 cargo。这是 Rust 的官方构建和包管理工具,本篇文章将从零开始,详细讲解它的使用、配置文件、运行模式、进阶用法等,让你真正搞懂 Cargo!


✨ 目录

  1. Cargo 是什么?
  2. 如何使用 Cargo 创建和运行项目
  3. Cargo 项目结构讲解
  4. Cargo.toml 与 Cargo.lock 是什么?
  5. 运行与编译模式:debug 和 release
  6. 进阶功能一:features(功能切换)
  7. 进阶功能二:workspace(多包管理)
  8. 常用命令汇总
  9. 总结

Cargo 是什么?

Cargo 是 Rust 官方自带的构建系统和包管理器,作用类似于:

  • JavaScript 的 npm
  • Python 的 pip
  • Java 的 maven

你可以用它来:

  • 创建新项目
  • 编译项目
  • 管理依赖包
  • 发布项目到 crates.io

如何使用 Cargo 创建和运行项目

打开命令行,输入:

cargo new hello-rust

它会生成如下结构:

hello-rust/
├── Cargo.toml
└── src/
    └── main.rs

进入目录并运行:

cd hello-rust
cargo run

输出:

Hello, world!

Cargo 项目结构讲解

  • Cargo.toml:项目配置文件,写明项目名、版本、依赖等。
  • Cargo.lock:锁定依赖的具体版本,保证每次构建一致。
  • src/main.rs:项目入口,相当于 Java 的 main()
  • target/:编译后的输出目录,默认会创建 debugrelease 文件夹。

Cargo.toml 与 Cargo.lock 是什么?

Cargo.toml —— 配置文件(你写)

[package]
name = "hello-rust"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8"

解释:

  • [package] 是包信息
  • [dependencies] 是你要用的库

Cargo.lock —— 锁定文件(自动生成)

记录每个依赖的 具体版本号和来源路径,防止别人运行你项目时下到不同的版本。

举例:

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

运行与编译模式:debug 和 release

Rust 支持两种主要构建模式:

🔧 Debug 模式(默认)

cargo build     # 编译
cargo run       # 编译 + 运行

特点:

  • 编译快
  • 包含调试信息
  • 可读性高但运行性能稍低

🚀 Release 模式(优化后)

cargo build --release
cargo run --release

特点:

  • 编译慢(优化耗时)
  • 没有调试信息
  • 性能最佳(适合部署)

输出目录:target/release/ 而不是 target/debug/


进阶功能一:features(功能切换)

📌 场景:如果你希望某个模块是可选的,比如 CLI 命令解析、加密支持,就可以用 features


🧠 背后原理

Rust 提供 条件编译:代码在某些编译条件下才会生效。

✨ 示例说明:

Cargo.toml

[dependencies]
regex = { version = "1", optional = true }

[features]
default = []             # 默认不开启任何功能
cli = ["regex"]          # 开启 feature "cli" 时,启用 regex

src/main.rs

#[cfg(feature = "cli")]
fn run_cli() {
    println!("运行 CLI 模式");
}

fn main() {
    // 如果启用了 feature cli,就调用 run_cli()
    #[cfg(feature = "cli")]
    run_cli();

    // 如果没有启用 cli,就走这里
    #[cfg(not(feature = "cli"))]
    println!("未启用 CLI 模式");
}

🛠️ 如何运行?

cargo run --features cli        # 输出:运行 CLI 模式
cargo run                       # 输出:未启用 CLI 模式

进阶功能二:workspace(多包管理)

📌 场景:如果你有多个 crate,比如一个库 + 多个工具模块,就需要 workspace


🧠 背后原理

通过 workspace,你可以:

  • 多个 crate 统一管理依赖
  • 提高编译缓存效率
  • 模块之间引用简单

✨ 示例结构

my-workspace/
├── Cargo.toml           # 顶层
├── lib1/
│   └── Cargo.toml
└── app/
    └── Cargo.toml

顶层 Cargo.toml

[workspace]
members = ["lib1", "app"]

app/Cargo.toml

[dependencies]
lib1 = { path = "../lib1" }

app/src/main.rs

use lib1::say_hi;

fn main() {
    say_hi();
}

lib1/src/lib.rs

pub fn say_hi() {
    println!("Hello from lib1!");
}

运行:

cargo run -p app

常用命令汇总

命令含义
cargo new proj创建新项目
cargo build编译 debug 模式
cargo build --release编译 release 模式
cargo run编译 + 运行
cargo test运行测试
cargo clean清除缓存
cargo update更新依赖
cargo doc --open本地文档生成 + 打开
cargo check检查语法,不编译生成目标文件

总结

Rust 之所以被称为“工程师的语言”,是因为它把代码质量和工程实践融合得非常深入,而 Cargo 就是这种理念的体现

应该掌握的:

  • 如何用 Cargo 创建、运行、管理项目
  • Cargo.tomlCargo.lock 的作用与区别
  • 如何使用 features 做功能开关
  • 如何通过 workspace 组织大型项目
  • 构建优化(debug/release)
  • 常见命令操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pumpkin84514

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值