跳到主要内容

Rust Cargo工具

提示
  1. Cargo 工具概述:Cargo 是 Rust 的包管理器,用于依赖管理、项目构建和打包、文档生成及管理外部库。
  2. 使用 Cargo 管理依赖:Cargo 可以通过在 Cargo.toml 文件中添加依赖来下载和管理外部库,如使用 rand crate 生成随机数。
  3. 构建和运行 Rust 项目:使用 cargo build 构建项目并生成二进制文件,cargo run 构建并运行项目,cargo check 检查项目而不生成二进制文件。

Cargo 是 Rust 的包管理器。它与 Rust 一起预装,可以用来打包依赖、管理依赖以及构建和分发我们自己的包/库。

Rust 中 Cargo 的特性

Cargo 是 Rust 的命令行工具,具有以下特性:

  • 依赖管理

Cargo 使得管理我们项目的依赖变得容易,包括添加、更新和移除依赖。

  • 构建和打包

Cargo 可以自动构建和打包我们的 Rust 项目,创建可以与他人共享的二进制或库代码。

  • 文档生成

Cargo 可以为我们的代码自动生成文档,使其他开发者更容易理解和使用我们的库。

  • 下载 crates Cargo 可以从 crates.io 下载并安装库,这是 Rust crates 的中心仓库。
  • 运行二进制文件或测试 Cargo 可以构建我们的源代码,运行可执行二进制文件,以及运行我们的测试。

在 Rust 中使用 Cargo 进行依赖管理

Cargo 的主要功能之一是它可以下载、管理外部库。

让我们看一个如何从 crates.io 使用外部 crate 的示例。crates.io 是一个中心仓库,我们可以从中拉取和发布 Rust 的共享库。

首先使用 cargo 创建一个 Rust 项目:

$ cargo new hello_world

现在,

  • 我们项目目录 hello_world 根目录中的 Cargo.toml 文件用于管理依赖。

如果我们想使用 "rand" crate,我们可以将以下行添加到 Cargo.toml[dependencies] 部分。

[package]
name = "hello_world"
version = "0.1.0"
edition = "2021"

# 更多关键字及其定义见 https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rand = "0.8.5"

注意:我们也可以使用命令 cargo add rand 向项目添加依赖。

  • 接下来,我们需要在 src/main.rs Rust 文件中导入 crate。我们可以在文件顶部使用 extern crate <crate_name> 行来做到这一点。
extern crate rand;
  • 现在,我们可以使用 "rand" crate 生成一个在 16 之间的随机数。这里使用的 use 关键字用于将 "rand" crate 中的项(如函数、类型和常量)导入到当前作用域。
extern crate rand;
use rand::Rng;

fn main() {
let mut rng = rand::thread_rng();

// 模拟掷骰子
println!("掷骰子 = {}", rng.gen_range(1..=6));
}

# 输出: 掷骰子 = 5

使用 Cargo 在 Rust 中构建和运行项目

我们可以使用 cargo 安装、构建并运行我们的 hello_world 项目,并且包含 "rand" 包。以下是操作方法:

构建项目

$ cargo build

输出

编译 libc v0.2.139
编译 cfg-if v1.0.0
编译 ppv-lite86 v0.2.17
编译 getrandom v0.2.8
编译 rand_core v0.6.4
编译 rand_chacha v0.3.1
编译 rand v0.8.5
编译 hello_world v0.1.0 (/experiments/rust-practice/hello_world)
完成开发 [未优化 + 调试信息] 目标(s)2.57s

cargo build 命令首先安装 src/ 目录中使用的任何包,然后开始编译项目。

运行项目

$ cargo run

输出

完成开发 [未优化 + 调试信息] 目标(s)0.05s
运行 `target/debug/hello_world`
掷骰子 = 5

Rust 中有用的 Cargo 命令

Cargo 可以为我们执行一系列重复性任务。这里是一些常用的 cargo 命令。

命令描述
cargo new创建一个带有基本目录结构的新 Rust 项目
cargo build构建(编译)当前项目并生成二进制可执行文件
cargo run构建并运行当前项目(cargo build + run)
cargo check构建当前项目但不生成二进制可执行文件
cargo add添加新依赖并将其包含在 Cargo.toml 文件中
cargo update将当前项目的所有依赖更新到最新版本