词汇表

制品

制品 是编译过程创建的文件或文件集。这包括可链接库、可执行二进制文件和生成的文档。

Cargo

Cargo 是 Rust 的 包管理器,也是本书的主要主题。

Cargo.lock

参见 锁定文件

Cargo.toml

参见 清单

Rust 是指库或可执行程序,分别称为库包二进制包

为 Cargo 定义的每个 目标 都是一个

笼统地说,术语 可以指目标的源代码,也可以指目标生成的已编译制品。它还可以指从 注册源 获取的压缩包。

给定包的源代码可以细分为 模块

版本

Rust 版本 是 Rust 语言发展的一个里程碑。包的版本Cargo.toml 清单 中指定,并且各个目标可以指定它们使用的版本。有关更多信息,请参阅 版本指南

功能

功能 的含义取决于上下文

  • 功能 是一个命名标志,允许条件编译。功能可以指可选依赖项,也可以指在 Cargo.toml 清单 中定义的任意名称,可以在源代码中检查该名称。

  • Cargo 具有 不稳定功能标志,可用于启用 Cargo 本身的实验性行为。

  • Rust 编译器和 Rustdoc 都有自己的不稳定功能标志(请参阅 不稳定功能手册Rustdoc 手册)。

  • CPU 目标具有 目标功能,用于指定 CPU 的功能。

索引

索引注册源 中可搜索的 列表。

锁定文件

Cargo.lock 锁定文件 是一个文件,它捕获 工作空间 中使用的每个依赖项的确切版本。它由 Cargo 自动生成。参见 Cargo.toml 与 Cargo.lock

清单

清单 是名为 Cargo.toml 的文件中对 工作空间 的描述。

虚拟清单 是一个 Cargo.toml 文件,它只描述一个工作空间,不包含包。

成员

成员 是属于 工作空间

模块

Rust 的模块系统用于将代码组织成称为模块 的逻辑单元,这些单元在代码中提供隔离的命名空间。

给定 的源代码可以细分为一个或多个独立的模块。这通常是为了将代码组织成相关功能的区域,或者控制源(结构体、函数等)中符号的可见范围(公共/私有)。

Cargo.toml 文件主要关注它定义的 、它的包以及它们所依赖的包的包。但是,在使用 Rust 时,您会经常看到“模块”一词,因此您应该了解它与给定包的关系。

是源文件和描述包的 Cargo.toml 清单 文件的集合。包具有名称和版本,用于指定包之间的依赖关系。

一个包包含多个 目标,每个目标都是一个 Cargo.toml 文件描述了包中包的类型(二进制或库),以及关于每个包的一些元数据——如何构建每个包、它们的直接依赖项是什么等等,如本书所述。

包根目录 是包的 Cargo.toml 清单文件所在的目录。(与 工作空间根目录 进行比较。)

包 ID 规范,或 SPEC,是一个字符串,用于唯一引用来自特定源的特定版本的包。

小型到中型的 Rust 项目只需要一个包,尽管它们通常有多个包。

较大的项目可能涉及多个包,在这种情况下,可以使用 Cargo 工作空间 来管理包之间的公共依赖项和其他相关元数据。

包管理器

广义上讲,包管理器 是软件生态系统中的一个程序(或相关程序的集合),它可以自动执行获取、安装和升级制品的流程。在编程语言生态系统中,包管理器是一个面向开发人员的工具,其主要功能是从某个中央存储库下载库制品及其依赖项;此功能通常与执行软件构建的能力(通过调用特定于语言的编译器)相结合。

Cargo 是 Rust 生态系统中的包管理器。Cargo 下载您的 Rust 的依赖项(称为 制品)、编译您的包、制作可分发的包,并(可选)将它们上传到 crates.io,即 Rust 社区的 包注册源

包注册源

参见 注册源

项目

的另一个名称。

注册源

注册源 是一种服务,它包含可下载的 集合,这些包可以安装或用作 的依赖项。Rust 生态系统中的默认注册源是 crates.io。注册源有一个 索引,其中包含所有包的列表,并告诉 Cargo 如何下载所需的包。

是一个提供程序,它包含可以作为 的依赖项包含的 。有几种类型的源:

  • 注册源 — 参见 注册源
  • 本地注册源 — 一组存储为文件系统上压缩文件的包。参见 本地注册源
  • 目录源 — 一组存储为文件系统上未压缩文件的包。参见 目录源
  • 路径源 — 位于文件系统上的单个包(例如 路径依赖项)或一组多个包(例如 路径覆盖)。
  • Git 源 — 位于 git 存储库中的包(例如 git 依赖项git 源)。

更多信息请参见源代码替换

规格

参见包 ID 规范

目标

术语“目标”的含义取决于上下文

  • Cargo 目标 — Cargo 由与将要生成的 工件 相对应的 目标 组成。包可以包含库、二进制文件、示例、测试和基准测试目标。目标列表Cargo.toml 清单 中配置,通常由源文件的 目录布局 自动推断。

  • 目标目录 — Cargo 将所有构建的工件和中间文件放置在 目标 目录中。默认情况下,这是一个名为 target 的目录,位于 工作区 根目录下,如果未使用工作区,则位于包根目录下。可以使用 --target-dir 命令行选项、CARGO_TARGET_DIR 环境变量build.target-dir 配置选项 更改该目录。

  • 目标架构 — 构建工件的操作系统和机器架构通常称为 目标

  • 目标三元组 — 三元组是一种用于指定目标架构的特定格式。三元组可以称为 目标三元组,它是生成的工件的架构,而 主机三元组 是编译器运行所在的架构。可以使用 --target 命令行选项或 build.target 配置选项 指定目标三元组。三元组的一般格式为 <arch><sub>-<vendor>-<sys>-<abi>,其中

    • arch = 基本 CPU 架构,例如 x86_64i686armthumbmips 等。
    • sub = CPU 子架构,例如 arm 具有 v7v7sv5te 等。
    • vendor = 供应商,例如 unknownapplepcnvidia 等。
    • sys = 系统名称,例如 linuxwindowsdarwin 等。none 通常用于没有操作系统的裸机。
    • abi = ABI,例如 gnuandroideabi 等。

    某些参数可以省略。运行 rustc --print target-list 以获取受支持目标的列表。

测试目标

Cargo 测试目标 生成二进制文件,帮助验证代码的正确操作和正确性。有两种类型的测试工件

  • 单元测试单元测试 是直接从库或二进制目标编译的可执行二进制文件。它包含库或二进制代码的全部内容,并运行 #[test] 注释的函数,旨在验证代码的各个单元。
  • 集成测试目标集成测试目标 是从 测试目标 编译的可执行二进制文件,该目标是一个独立的 crate,其源代码位于 tests 目录中,或由 Cargo.toml 清单 中的 [[test]] 指定。它旨在仅测试库的公共 API,或执行二进制文件以验证其操作。

工作区

工作区 是一个或多个共享公共依赖项解析(具有共享的 Cargo.lock 锁定文件)、输出目录和各种设置(例如配置文件)的 的集合。

虚拟工作区 是指根 Cargo.toml 清单 未定义包,而仅列出工作区 成员 的工作区。

工作区根目录 是工作区的 Cargo.toml 清单文件所在的目录。(与 包根目录 进行比较。)