Rust Cargo

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


Rust 中 Cargo 的特性

Cargo 是一个用于 Rust 的命令行工具,具有以下特性

  • 依赖管理

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

  • 构建和打包

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

  • 文档生成

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

  • 下载 crate
    Cargo 可以从 crates.io 下载和安装库,这是 Rust crate 的中央存储库。
  • 运行二进制文件或测试
    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"

# See more keys and their definitions at https://doc.rust-lang.net.cn/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 在 **1** 和 **6** 之间生成一个随机数。use 关键字在这里用于将项(如函数、类型和常量)从 "rand" crate 导入到当前作用域。

    extern crate rand;
use rand::Rng;

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

    // simulate rolling a die
    println!("roll = {}", rng.gen_range(1..=6));
}

# Output: roll = 5

使用 Cargo 构建和运行 Rust 项目

我们可以使用 cargo 来安装、构建和运行我们的 hello_world 项目以及 "rand" crate。方法如下:

构建项目

$ cargo build

输出

Compiling libc v0.2.139
Compiling cfg-if v1.0.0
Compiling ppv-lite86 v0.2.17
Compiling getrandom v0.2.8
Compiling rand_core v0.6.4
Compiling rand_chacha v0.3.1
Compiling rand v0.8.5
Compiling hello_world v0.1.0 (/experiments/rust-practice/hello_world)
  Finished dev [unoptimized + debuginfo] target(s) in 2.57s

cargo build 命令首先安装 src/ 目录中使用的所有 crate,然后继续编译项目。


运行项目

$ cargo run

输出

Finished dev [unoptimized + debuginfo] target(s) in 0.05s
    Running `target/debug/hello_world`
roll = 5

Rust 中有用的 Cargo 命令

Cargo 可以为我们处理许多重复性任务。以下是一些常用的 cargo 命令。

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

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战