入门 The Cargo Team 2026-09-13 15:48:21 · 0 阅读

第19章 Cargo 配置详解

本文介绍 Cargo 的配置系统的工作方式,以及可用的配置项。若要了解如何通过 manifest 配置包,请参阅 manifest 格式

层级结构

Cargo 支持针对特定包的本地配置,也支持全局配置。它会从当前目录开始,逐级向上在所有父目录中查找配置文件。例如,如果在 /projects/foo/bar/baz 目录下运行 Cargo,则会按以下顺序查找并合并这些配置文件:

  • /projects/foo/bar/baz/.cargo/config.toml
  • /projects/foo/bar/.cargo/config.toml
  • /projects/foo/.cargo/config.toml
  • /projects/.cargo/config.toml
  • /.cargo/config.toml
  • $CARGO_HOME/config.toml(默认路径为:
    • Windows:%USERPROFILE%\.cargo\config.toml
    • Unix:$HOME/.cargo/config.toml

借助这种结构,你可以为每个包单独指定配置,甚至可以将其纳入版本控制。也可以在用户主目录中放置配置文件来指定个人默认配置。

如果同一个键出现在多个配置文件中,这些值会被合并:数字、字符串和布尔值以更深层目录中的值为准,父目录的值会被覆盖,主目录的优先级最低。数组则会拼接在一起,优先级高的条目排在合并后数组的后面。

目前,在 workspace 中运行 Cargo 时,它不会读取 workspace 内各个 crate 的配置文件。也就是说,如果某个 workspace 包含 /projects/foo/bar/baz/mylib/projects/foo/bar/baz/mybin 两个 crate,且它们各自有配置文件 /projects/foo/bar/baz/mylib/.cargo/config.toml/projects/foo/bar/baz/mybin/.cargo/config.toml,那么当从 workspace 根目录(/projects/foo/bar/baz/)运行 Cargo 时,这些配置文件不会被读取。

注意:Cargo 也会读取不带 .toml 扩展名的配置文件,例如 .cargo/config。Cargo 在 1.39 版本中增加了对 .toml 扩展名的支持, 且该格式为首选形式。若两个文件同时存在,Cargo 将使用不带扩展名的那个文件。

Configuration format

配置文件使用 TOML 格式编写(类似清单文件), 在段落(表)中采用简单的键值对。以下是对所有设置的简要概述,详细说明见下文。

paths = ["/path/to/override"] # 路径依赖覆盖

[alias]     # 命令别名
b = "build"
c = "check"
t = "test"
r = "run"
rr = "run --release"
recursive_example = "rr --example recursions"
space_example = ["run", "--release", "--", "\"command list\""]

[build]
warnings = "warn"             # 调整警告的有效 lint 级别
jobs = 1                      # 并行任务数,默认为 CPU 核心数
rustc = "rustc"               # Rust 编译器工具
rustc-wrapper = "…"           # 使用此 wrapper 代替 `rustc`
rustc-workspace-wrapper = "…" # 对 workspace 成员使用此 wrapper 代替 `rustc`
rustdoc = "rustdoc"           # 文档生成工具
target = "triple"             # 构建目标三元组(`cargo install` 会忽略此项)
target-dir = "target"         # 生成产物存放路径
build-dir = "target"          # 中间构建产物存放路径
rustflags = ["…", "…"]        # 传递给所有编译器调用的自定义 flags
rustdocflags = ["…", "…"]     # 传递给 rustdoc 的自定义 flags
incremental = true            # 是否启用增量编译
dep-info-basedir = "…"        # depfiles 中目标文件的基础目录路径

[credential-alias]
# 提供一种方式定义凭证提供者的别名。
my-alias = ["/usr/bin/cargo-credential-example", "--argument", "value", "--flag"]

[doc]
browser = "chromium"          # 用于 `cargo doc --open` 的浏览器,
                              # 会覆盖 `BROWSER` 环境变量

[env]
# 为 Cargo 运行的任何进程设置 ENV_VAR_NAME=value
ENV_VAR_NAME = "value"
# 即使环境中已存在也强制设置
ENV_VAR_NAME_2 = { value = "value", force = true }
# `value` 相对于 `.cargo/config.toml` 的父目录,环境变量将是完整的绝对路径
ENV_VAR_NAME_3 = { value = "relative/path", relative = true }

[future-incompat-report]
frequency = 'always' # 何时显示关于未来不兼容报告的提示

[cache]
auto-clean-frequency = "1 day"   # 自动清理缓存的频率

[cargo-new]
vcs = "none"              # 使用的版本控制系统 ('git', 'hg', 'pijul', 'fossil', 'none')

[http]
debug = false               # HTTP 调试
proxy = "host:port"         # libcurl 格式的 HTTP 代理
ssl-version = "tlsv1.3"     # 使用的 TLS 版本
ssl-version.max = "tlsv1.3" # 最大 TLS 版本
ssl-version.min = "tlsv1.1" # 最小 TLS 版本
timeout = 30                # 每个 HTTP 请求的超时时间(秒)
low-speed-limit = 10        # 网络超时阈值(字节/秒)
cainfo = "cert.pem"         # 证书颁发机构 (CA) 捆绑包路径
proxy-cainfo = "cert.pem"   # 代理证书颁发机构 (CA) 捆绑包路径
check-revoke = true         # 检查 SSL 证书吊销
multiplexing = true         # HTTP/2 多路复用
user-agent = "…"            # user-agent 头

[install]
root = "/some/path"         # `cargo install` 的目标目录

[net]
retry = 3                   # 网络重试次数
git-fetch-with-cli = true   # 使用 `git` 可执行文件进行 git 操作
offline = true              # 不访问网络

[net.ssh]
known-hosts = ["..."]       # 已知的 SSH 主机公钥

[patch.<registry>]
# 与 Cargo.toml 中 [patch] 相同的键

[profile.<name>]         # 通过配置修改 profile 设置。
inherits = "dev"         # 继承自 [profile.dev] 的设置。
opt-level = 0            # 优化级别。
debug = true             # 包含调试信息。
split-debuginfo = '...'  # 调试信息拆分行为。
strip = "none"           # 移除符号或调试信息。
debug-assertions = true  # 启用调试断言。
overflow-checks = true   # 启用运行时整数溢出检查。
lto = false              # 设置链接时优化。
panic = 'unwind'         # panic 策略。
incremental = true       # 增量编译。
codegen-units = 16       # 代码生成单元数量。
rpath = false            # 设置 rpath 链接选项。
[profile.<name>.build-override]  # 覆盖 build-script 设置。
# 与普通 profile 相同的键。
[profile.<name>.package.<name>]  # 覆盖某个 package 的 profile。
# 与普通 profile 相同的键(不包括 `panic`、`lto` 和 `rpath`)。

[resolver]
lockfile-path = "…"  # 覆盖用于 lockfile 的路径
incompatible-rust-versions = "allow"  # 指定 resolver 对这些版本的反应

[registries.<name>]  # crates.io 之外的注册表
index = "…"          # 注册表索引 URL
token = "…"          # 注册表认证 token
credential-provider = "cargo:token" # 该注册表的凭证提供者。

[registries.crates-io]
protocol = "sparse"  # 访问 crates.io 使用的协议。

[registry]
default = "…"        # 默认注册表名称
token = "…"          # crates.io 认证 token
credential-provider = "cargo:token"           # crates.io 的凭证提供者。
global-credential-providers = ["cargo:token"] # 默认使用的凭证提供者。

[source.<name>]      # 源定义和替换
replace-with = "…"   # 用指定名称的源替换此源
directory = "…"      # 目录源路径
registry = "…"       # 注册表源 URL
local-registry = "…" # 本地注册表源路径
git = "…"            # git 仓库源 URL
branch = "…"         # git 仓库分支名
tag = "…"            # git 仓库标签名
rev = "…"            # git 仓库 revision

[target.<triple>]
linker = "…"              # 使用的 linker
runner = "…"              # 运行可执行文件的 wrapper
rustflags = ["…", "…"]    # `rustc` 的自定义 flags
rustdocflags = ["…", "…"] # `rustdoc` 的自定义 flags

[target.<cfg>]
linker = "…"            # 使用的 linker
runner = "…"            # 运行可执行文件的 wrapper
rustflags = ["…", "…"]  # `rustc` 的自定义 flags

[target.<triple>.<links>] # `links` build script 覆盖
rustc-link-lib = ["foo"]
rustc-link-search = ["/path/to/foo"]
rustc-flags = "-L /some/path"
rustc-cfg = ['key="value"']
rustc-env = {key = "value"}
rustc-cdylib-link-arg = ["…"]
metadata_key1 = "value"
metadata_key2 = "value"

[term]
quiet = false                    # cargo 输出是否安静
verbose = false                  # cargo 是否提供详细输出
color = 'auto'                   # cargo 是否对输出着色
hyperlinks = true                # cargo 是否在输出中插入链接
unicode = true                   # cargo 是否可以使用非 ASCII Unicode 字符渲染输出
progress.when = 'auto'           # cargo 是否显示进度条
progress.width = 80              # 进度条宽度
progress.term-integration = true # cargo 是否向终端模拟器报告进度


环境变量

除了 TOML 配置文件,Cargo 还可以通过环境变量来配置。对于形如 foo.bar 的配置键,可以用环境变量 CARGO_FOO_BAR 来定义其值。转换规则是:键名转为大写,点和横线转为下划线。例如 target.x86_64-unknown-linux-gnu.runner 这个键也可以通过环境变量 CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER 来定义。

环境变量的优先级高于 TOML 配置文件。目前环境变量只支持整数、布尔值、字符串以及部分数组类型的值。下文的说明会标注哪些配置键支持环境变量,其余的由于技术原因暂不支持。

除上述机制外,Cargo 还识别一些特定的环境变量

命令行覆盖

Cargo 还支持通过 --config 命令行选项进行任意配置覆盖。参数可以是 TOML 语法的 KEY=VALUE 形式,也可以是一个额外配置文件的路径:

# 使用 TOML 语法的 `KEY=VALUE`
cargo --config net.git-fetch-with-cli=true fetch

# 使用配置文件路径
cargo --config ./path/to/my/extra-config.toml fetch

--config 选项可以多次指定,此时各值会按从左到右的顺序合并,合并逻辑与多个配置文件同时生效时相同。以这种方式指定的配置值优先级最高,其次是环境变量,最后是配置文件。

--config 选项指定为额外配置文件时,该配置文件的优先级规则与其他直接通过 --config 指定的选项相同。

下面是使用 Bourne shell 语法的一些示例:

# Most shells will require escaping.
cargo --config http.proxy=\"http://example.com\" …

# Spaces may be used.
cargo --config "net.git-fetch-with-cli = true" …

# TOML array example. Single quotes make it easier to read and write.
cargo --config 'build.rustdocflags = ["--html-in-header", "header.html"]' …

# Example of a complex TOML key.
cargo --config "target.'cfg(all(target_arch = \"arm\", target_os = \"none\"))'.runner = 'my-runner'" …

# Example of overriding a profile setting.
cargo --config profile.dev.package.image.opt-level=3 …

引入额外的配置文件

通过顶层 include 键,配置文件可以引用其他配置文件。这使得跨多个项目共享配置,或将复杂配置拆分到多个文件中成为可能。

include

  • 类型:字符串或表格数组
  • 默认值:无
  • 环境变量:不支持

加载额外的配置文件。路径相对于包含它们的配置文件。仅接受以 .toml 结尾的路径。

支持以下格式:

# array of paths
include = [
    "frodo.toml",
    "samwise.toml",
]

# inline tables for more control
include = [
    { path = "required.toml" },
    { path = "optional.toml", optional = true },
]

注: 为了提高可读性并避免混淆,建议:

  • include 放在配置文件顶部
  • 每行写一个 include 项,以便更清晰地显示版本控制差异
  • 需要可选包含项时使用内联表格语法

使用表格语法时,支持以下字段:

  • path(字符串,必填):要引入的配置文件路径。
  • optional(布尔值,默认:false):如果为 true,缺失的文件会被静默跳过,而不报错。

include 的合并行为与其他配置值不同:

  1. 首先从 include 路径加载配置值。
    • 按从左到右的顺序加载被引入的文件,后续文件的值优先于前序文件。
    • 如果被包含的配置文件中也有 include 键,此步骤会递归执行。
  2. 随后,配置文件自身的值会合并到被包含的配置之上,具有最高优先级。

相对于配置的路径

配置文件中的路径可以是绝对路径、相对路径,或者是没有任何路径分隔符的名称。 对于可执行文件,如果不带路径分隔符,将使用 PATH 环境变量来查找可执行文件。 对于非可执行文件,其路径是相对于该配置值定义位置解析的。

具体规则如下:

  • 对于环境变量,路径相对于当前工作目录。
  • 对于直接从 --config KEY=VALUE 选项加载的配置值,路径相对于当前工作目录。
  • 对于配置文件,无论该文件是来自层级探测还是--config <path> 选项,其路径都是相对于该配置文件所在目录的父目录。

注意:为了与现有的 .cargo/config.toml 探测行为保持一致,通过 --config <path> 传入的配置文件中路径也设计为相对于该配置文件上两级目录。

为避免出现意外结果,经验法则是将额外的配置文件放在与项目中发现的 .cargo/config.toml 同一层级。 例如,对于项目 /my/project,建议将配置文件放在 /my/project/.cargo 下,或者放在同级的其他目录,如 /my/project/.config

# 相对路径示例。

[target.x86_64-unknown-linux-gnu]
runner = "foo"  # 在 `PATH` 中查找 `foo`。

[source.vendored-sources]
# 目录相对于 `.cargo/config.toml` 所在位置的父目录。
# 例如,如果配置文件在 `/my/project/.cargo/config.toml`,则结果路径为 `/my/project/vendor`。
directory = "vendor"

带参数的可执行文件路径

某些 Cargo 命令会调用外部程序,这些程序可以配置为路径以及一定数量的参数。

值可以是字符串数组,如 ['/path/to/program', 'somearg'],也可以是用空格分隔的字符串,如 '/path/to/program somearg'。如果可执行文件路径中包含空格,则必须使用数组形式。

如果 Cargo 需要向程序传递其他参数(比如要打开或运行的路径),这些参数会追加在此类选项值中最后一个参数之后。如果指定的程序路径不含路径分隔符,Cargo 会在 PATH 中搜索该可执行文件。

凭据(Credentials)

包含敏感信息的配置值存储在 $CARGO_HOME/credentials.toml 文件中。使用 cargo:token 凭据提供程序时,cargo logincargo logout 会自动创建和更新此文件。

一些 Cargo 命令(如 cargo publish)会使用 token 来向远程 registry 进行身份验证。请务必妥善保管 token,避免泄露。

该文件与 Cargo 配置文件使用相同的格式。

[registry]
token = "…"   # crates.io 的访问令牌

[registries.<name>]
token = "…"   # 指定 registry 的访问令牌

与其他大多数配置值一样,token 也可以通过环境变量指定。crates.io 的 token 可通过 CARGO_REGISTRY_TOKEN 环境变量指定。其他 registry 的 token 可通过形如 CARGO_REGISTRIES_<name>_TOKEN 的环境变量指定,其中 <name> 是 registry 名称的全大写形式。

注意:Cargo 也能读写不带 .toml 扩展名的凭据文件,例如 .cargo/credentials。对 .toml 扩展名的支持是在 1.39 版本中加入的;从 1.68 版本起,Cargo 默认写入带扩展名的文件。但出于向后兼容的考虑,当两个文件同时存在时,Cargo 会读写不带扩展名的那个。

配置键(Configuration keys)

本节记录所有配置键。对于包含可变部分的键,其描述会用尖括号标注变量,例如 target.<triple>,其中 <triple> 部分可以是任意 目标三元组,如 target.x86_64-pc-windows-msvc

paths

  • 类型:字符串数组(路径)
  • 默认值:无
  • 环境变量:不支持

指向本地包路径的数组,这些包将用作依赖项的覆盖源。更多详情请参阅 覆盖依赖指南

[alias]

  • 类型:字符串或字符串数组
  • 默认值:见下文
  • 环境变量:CARGO_ALIAS_<name>

[alias] 表定义 CLI 命令别名。例如,运行 cargo b 是运行 cargo build 的别名。表中的每个键代表子命令,对应的值则是实际执行的命令。值可以是字符串数组,其中第一个元素是命令,后续元素是参数;也可以是单个字符串,它将被按空格分割为子命令和参数。Cargo 内置了以下别名:

[alias]
b = "build"
c = "check"
d = "doc"
t = "test"
r = "run"
rm = "remove"

别名不允许重新定义现有的内置命令。

别名具有递归性:

[alias]
rr = "run --release"
recursive_example = "rr --example recursions"

[build]

[build] 表控制构建时操作和编译器设置。

build.warnings

  • 类型:字符串
  • 默认值:"warn"
  • 环境变量:CARGO_BUILD_WARNINGS

调整本地包中 lint 警告的有效级别。允许的级别如下:

  • "warn":继续将 lint 报告为警告(默认值)。
  • "allow":隐藏 lint 警告。
  • "deny":对于存在 lint 警告的 crate 发出错误。使用 --keep-going 可查看所有依赖 crate 的 lint 警告。

仅受 lint 类警告(即可调整级别)影响。例如,使用 --verbose --verbose 时,非 lint 警告及来自依赖项的警告仍会显示。

MSRV:自 1.97 版本起遵循此规则。

build.jobs

  • 类型:整数或字符串
  • 默认值:逻辑 CPU 数量
  • 环境变量:CARGO_BUILD_JOBS

设置并行运行的最大编译器进程数。若值为负,则最大进程数设为逻辑 CPU 数加上该负值的绝对值(即 CPU 数加指定值,原文意为 CPU 数 plus provided value,此处按常规语义理解为 CPU 数加该数值带来的增量,通常负数表示额外增加,此处直译逻辑:若为负,设为逻辑 CPU 数量加上提供的值)。不得为 0。若字符串指定为 default,则恢复默认值。

可通过 --jobs CLI 选项覆盖。

build.rustc

  • 类型:字符串(程序路径)
  • 默认值:"rustc"
  • 环境变量:CARGO_BUILD_RUSTCRUSTC

设置用于 rustc 的可执行程序。

build.rustc-wrapper

  • 类型:字符串(程序路径)
  • 默认值:无
  • 环境变量:CARGO_BUILD_RUSTC_WRAPPERRUSTC_WRAPPER

设置用于替代 rustc 执行的包装器。传递给包装器的第一个参数是实际可执行程序的路径(即若设置了 build.rustc 则为该值,否则为 "rustc")。

build.rustc-workspace-wrapper

  • 类型:字符串(程序路径)
  • 默认值:无
  • 环境变量:CARGO_BUILD_RUSTC_WORKSPACE_WRAPPERRUSTC_WORKSPACE_WRAPPER

设置仅针对工作区成员替代 rustc 执行的包装器。当构建无工作区的单包项目时,该包被视为工作区。传递给包装器的第一个参数是实际可执行程序的路径(即若设置了 build.rustc 则为该值,否则为 "rustc")。它会影响文件名哈希,使得包装器生成的工件单独缓存。

若同时设置了 rustc-wrapperrustc-workspace-wrapper,它们将嵌套执行:最终调用顺序为 $RUSTC_WRAPPER $RUSTC_WORKSPACE_WRAPPER $RUSTC

build.rustdoc

  • 类型:字符串(程序路径)
  • 默认值:"rustdoc"
  • 环境变量:CARGO_BUILD_RUSTDOCRUSTDOC

设置用于 rustdoc 的可执行文件。

build.target

  • 类型:字符串或字符串数组
  • 默认值:宿主平台
  • 环境变量:CARGO_BUILD_TARGET

编译时默认使用的目标平台三元组

可选值:

  • rustc --print target-list 列出的任何受支持目标。
  • "host-tuple",内部会替换为宿主机的目标平台。跨平台编译部分 crate 时,如果不想显式指定宿主机作为目标,这个值特别有用(例如共享项目中多人使用不同机器开发的 xtask)。
  • 自定义目标规格文件的路径。详见 Custom Target Lookup Path

可通过命令行选项 --target 覆盖。

[build]
target = ["x86_64-unknown-linux-gnu", "i686-unknown-linux-gnu"]

build.target-dir

  • 类型:字符串(路径)
  • 默认值:"target"
  • 环境变量:CARGO_BUILD_TARGET_DIRCARGO_TARGET_DIR

存放所有编译器输出的路径。未指定时,默认为位于 workspace 根目录下名为 target 的目录。

可通过命令行选项 --target-dir 覆盖。

更多信息参见构建缓存文档

build.build-dir

  • 类型:字符串(路径)
  • 默认值:默认为 build.target-dir 的值
  • 环境变量:CARGO_BUILD_BUILD_DIR

存放中间构建产物的目录。中间产物是 Rustc/Cargo 在构建过程中生成的。

该选项支持路径模板。

可用的模板变量:

  • {workspace-root} 会被解析为当前 workspace 的根目录。
  • {cargo-cache-home} 解析为 CARGO_HOME
  • {workspace-path-hash} 解析为 manifest 路径的哈希值

更多信息请参阅构建缓存文档

build.rustflags

  • 类型:字符串或字符串数组
  • 默认:无
  • 环境变量:CARGO_BUILD_RUSTFLAGSCARGO_ENCODED_RUSTFLAGSRUSTFLAGS

传递给 rustc 的额外命令行参数。其值可以是字符串数组,也可以是空格分隔的字符串。

额外参数有四种互斥的来源。系统按以下顺序检查,并采用最先找到的那一个:

  1. CARGO_ENCODED_RUSTFLAGS 环境变量。
  2. RUSTFLAGS 环境变量。
  3. 所有匹配的 target.<triple>.rustflagstarget.<cfg>.rustflags 配置项合并后的结果。
  4. build.rustflags 配置值。

也可以通过 cargo rustc 命令传递额外的参数。

如果使用了 --target 标志(或build.target),这些参数只会被传递给该 target 的编译器。为 host 构建的内容(如 build scripts 或 proc macros)不会接收这些参数。若未指定 --target,由于依赖是共享的,这些参数会被传递给所有编译器调用(包括 build scripts 和 proc macros)。如果你不希望将某些参数传递给 host 的 build scripts 或 proc macros,请通过 host 三元组 显式传入 --target

不建议传递那些由 Cargo 自身管理的参数。例如,由profiles驱动的参数,应通过设置相应的 profile 选项来处理。

注意:由于直接给编译器传参的特性较为底层,这可能会与未来版本的 Cargo 产生冲突。未来版本可能会自行发出相同或类似的参数,从而干扰你指定的参数。在此方面,Cargo 可能并不总是向后兼容的。

build.rustdocflags

  • 类型:string 或 string 数组
  • 默认值:无
  • 环境变量:CARGO_BUILD_RUSTDOCFLAGSCARGO_ENCODED_RUSTDOCFLAGSRUSTDOCFLAGS

传递给 rustdoc 的额外命令行参数。值可以是字符串数组,也可以是空格分隔的字符串。

额外的参数共有四个来源,彼此互斥。系统按以下顺序检查,并采用第一个找到的来源:

  1. CARGO_ENCODED_RUSTDOCFLAGS 环境变量。
  2. RUSTDOCFLAGS 环境变量。
  3. 所有匹配的 target.<triple>.rustdocflagstarget.<cfg>.rustdocflags 配置项合并后的结果。
  4. build.rustdocflags 配置值。

也可以通过 cargo rustdoc 命令传递额外的参数。

注意:由于直接向编译器传递参数属于底层操作,可能与未来 Cargo 版本自动发出的相同或类似参数发生冲突,进而干扰你指定的参数。Cargo 在此方面可能不具备完全的后向兼容性。

build.incremental

  • 类型:bool
  • 默认值:取自 profile
  • 环境变量:CARGO_BUILD_INCREMENTALCARGO_INCREMENTAL

是否执行增量编译。若未设置,默认使用profile 中的值。否则,此设置将覆盖所有 profile 的配置。

可将 CARGO_INCREMENTAL 环境变量设为 1 以强制对所有 profile 启用增量编译,或设为 0 以禁用。此环境变量会覆盖配置中的设置。

build.dep-info-basedir

  • 类型:string(路径)
  • 默认值:无
  • 环境变量:CARGO_BUILD_DEP_INFO_BASEDIR

dep info 文件路径中移除指定的路径前缀。此配置旨在将绝对路径转换为相对路径,以适配要求使用相对路径的工具。

该配置项的值是一个相对于配置文件的路径。例如,设为 "." 会剔除所有以 .cargo 目录的父目录开头的路径。

build.pipelining

此选项已废弃且不再使用。Cargo 始终启用 pipelining。

[credential-alias]

  • 类型:字符串或字符串数组
  • 默认值:空
  • 环境变量:CARGO_CREDENTIAL_ALIAS_<name>

[credential-alias] 表用于定义凭据提供器的别名。别名可以在 registry.global-credential-providers 数组中引用,也可以在 registries.<NAME>.credential-provider

如果值是字符串,会按空格拆分为路径和参数。

例如,定义一个名为 my-alias 的别名:

[credential-alias]
my-alias = ["/usr/bin/cargo-credential-example", "--argument", "value", "--flag"]

更多信息参见 Registry Authentication

[doc]

[doc] 表用于配置 cargo doc 命令的选项。

doc.browser

  • 类型:字符串或字符串数组(带参数的程序路径
  • 默认值:BROWSER 环境变量;若未设置,则以系统特定的方式打开链接

此选项设置 cargo doc 使用的浏览器。使用 --open 选项打开文档时,它会覆盖 BROWSER 环境变量。

[cargo-new]

[cargo-new] 表用于设置 cargo new 命令的默认值。

cargo-new.name

此选项已废弃且不再使用。

cargo-new.email

此选项已废弃且不再使用。

cargo-new.vcs

  • 类型:字符串
  • 默认值:"git""none"
  • 环境变量:CARGO_CARGO_NEW_VCS

指定初始化新仓库时使用的源代码控制系统。 有效值为 githg(用于 Mercurial)、pijulfossilnone 以禁用此行为。默认值为 git;若当前已在某个 VCS 仓库内,则默认为 none。可通过 --vcs 命令行选项覆盖。

[env]

[env] 部分允许你为构建脚本、rustc 调用、cargo runcargo build 设置额外的环境变量。

[env]
OPENSSL_DIR = "/opt/openssl"

默认情况下,指定的变量不会覆盖环境中已存在的值。通过设置 force 标志可以改变此行为。

设置 relative 标志时,该值将被评估为相对于包含 config.toml 文件的 .cargo 目录的父目录的配置相对路径。环境变量的值将是完整的绝对路径。

[env]
TMPDIR = { value = "/home/tmp", force = true }
OPENSSL_DIR = { value = "vendor/openssl", relative = true }

[future-incompat-report]

[future-incompat-report] 表控制未来不兼容性报告的设置。

future-incompat-report.frequency

  • 类型:字符串
  • 默认值:"always"
  • 环境变量:CARGO_FUTURE_INCOMPAT_REPORT_FREQUENCY

控制当存在未来不兼容性报告时,向终端显示通知的频率。可能的值:

  • always(默认):当命令(例如 cargo build)产生未来不兼容性报告时,始终显示通知
  • never:从不显示通知

[cache]

[cache] 表定义了 cargo 缓存的设置。

全局缓存

执行 cargo 命令时,Cargo 会自动追踪全局缓存中正在使用的文件。它会定期清理长时间未被使用的文件:若 3 个月内未使用过需联网下载的文件,将被删除;若 1 个月内未使用过可本地生成文件的,也会被清理。 这种自动清理仅在执行本身工作量较大的命令时触发,例如各类构建命令(cargo buildcargo testcargo check 等)以及 cargo fetch。 当 Cargo 处于离线模式(如使用 --offline--frozen 参数)时,自动清理功能会被禁用,以防止删除那些在长期离线状态下可能仍需使用的构建产物。

注意:目前,这种追踪机制仅针对 Cargo home 目录下的全局缓存。 它包括从注册表和 git 依赖项下载的索引及源文件。 针对构建产物的追踪功能尚未实现,相关进展记录在 cargo#13136 中。

此外,还有一个不稳定特性支持手动触发缓存清理,并允许进一步自定义配置选项。 详情请参阅 不稳定特性 章节。

cache.auto-clean-frequency

  • 类型:string
  • 默认值:"1 day"
  • 环境变量:CARGO_CACHE_AUTO_CLEAN_FREQUENCY

此选项定义了 Cargo 自动删除全局缓存中未使用文件的频率。 它并不定义文件的过期阈值,那些阈值在 上文 中已作说明。

它支持以下设置:

  • "never" — 从不删除旧文件。
  • "always" — 每次运行 Cargo 时都检查并删除旧文件。
  • 整数加上“seconds”、“minutes”、“hours”、“days”、“weeks”或“months” — 表示在给定时间范围内最多检查一次以删除旧文件。

[http]

[http] 表用于配置 HTTP 相关行为,包括获取 crate 依赖和访问远程 git 仓库。

http.debug

  • 类型:boolean
  • 默认值:false
  • 环境变量:CARGO_HTTP_DEBUG

设为 true 时启用 HTTP 请求调试。调试信息可通过设置环境变量 CARGO_LOG=network=debug 查看(如需更详细的信息可用 network=trace)。

注意:在公开场合发布这类日志时要小心,输出中可能包含带有认证令牌的请求头,泄露出去会很危险。发布前请务必检查日志内容。

http.proxy

  • 类型:string
  • 默认值:无
  • 环境变量:CARGO_HTTP_PROXYHTTPS_PROXYhttps_proxyhttp_proxy

设置 HTTP 和 HTTPS 代理。格式为 libcurl 格式,即 [protocol://]host[:port]。如果未设置,Cargo 还会读取全局 git 配置中的 http.proxy 设置。若这些都没设置,则 HTTPS_PROXYhttps_proxy 环境变量用于 HTTPS 请求的代理,http_proxy 用于 HTTP 请求的代理。

http.timeout

  • 类型:integer
  • 默认值:30
  • 环境变量:CARGO_HTTP_TIMEOUTHTTP_TIMEOUT

设置每个 HTTP 请求的超时时间,单位为秒。

http.cainfo

  • 类型:string(路径)
  • 默认值:无
  • 环境变量:CARGO_HTTP_CAINFO

证书颁发机构(CA)捆绑文件的路径,用于验证 TLS 证书。如未指定,Cargo 会尝试使用系统证书。

http.proxy-cainfo

  • 类型:string(路径)
  • 默认值:未设置时回退到 http.cainfo
  • 环境变量:CARGO_HTTP_PROXY_CAINFO

证书颁发机构(CA)捆绑文件的路径,用于验证代理的 TLS 证书。

http.check-revoke

  • 类型:boolean
  • 默认值:Windows 上为 true,其他系统为 false
  • 环境变量: CARGO_HTTP_CHECK_REVOKE

此项决定是否需要执行 TLS 证书吊销检查。该功能仅在 Windows 上有效。

http.ssl-version

  • 类型:字符串或 min/max 表格
  • 默认值:无
  • 环境变量: CARGO_HTTP_SSL_VERSION

此项设置最低 TLS 版本。它接受字符串参数,可选值包括 "default""tlsv1""tlsv1.0""tlsv1.1""tlsv1.2""tlsv1.3"

也可以传入一个包含 minmax 两个键值的表格,分别指定最小和最大 TLS 版本范围,这两个键值同样需要上述类型的字符串。

默认最低版本为 "tlsv1.0",最高版本为平台支持的最新版本,通常是 "tlsv1.3"

http.low-speed-limit

  • 类型:整数
  • 默认值:10
  • 环境变量: CARGO_HTTP_LOW_SPEED_LIMIT

此项控制慢速连接的超时行为。如果在 http.timeout 秒(默认 30 秒)内,平均传输速度低于设定的字节每秒值,连接将被视为过慢,Cargo 会中止并尝试重新连接。

http.multiplexing

  • 类型:布尔值
  • 默认值:true
  • 环境变量: CARGO_HTTP_MULTIPLEXING

当值为 true 时,Cargo 会尝试使用支持多路复用的 HTTP2 协议。这允许多个请求共用同一连接,通常在获取多个文件时能提升性能。若为 false,Cargo 将使用不带管道处理的 HTTP 1.1。

http.user-agent

  • 类型:字符串
  • 默认值:Cargo 的版本
  • 环境变量: CARGO_HTTP_USER_AGENT

指定自定义的 User-Agent 请求头。若未指定,默认使用包含 Cargo 版本号的字符串。

[install]

[install] 表定义了 cargo install 命令的默认值。

install.root

  • 类型: string (路径)
  • 默认值: Cargo 的主目录
  • 环境变量: CARGO_INSTALL_ROOT

设置安装 cargo install 可执行文件的根目录路径。可执行文件会被放置在根目录下的 bin 目录中。

为了记录已安装可执行文件的信息,还会在此根目录下创建一些额外的文件,例如 .crates.toml.crates2.json

如果未指定,默认使用 Cargo 的主目录(通常是用户主目录下的 .cargo)。

可通过命令行选项 --root 覆盖此设置。

[net]

[net] 表用于控制网络相关配置。

net.retry

  • 类型: 整数
  • 默认值: 3
  • 环境变量: CARGO_NET_RETRY

对于可能的偶发性网络错误,重试的次数。

net.git-fetch-with-cli

  • 类型: 布尔值
  • 默认值: false
  • 环境变量: CARGO_NET_GIT_FETCH_WITH_CLI

如果此值为 true,Cargo 将使用 git 可执行文件来获取注册表索引和 git 依赖项。如果为 false,则使用内置的 git 库。

对于需要特殊身份验证且 Cargo 不直接支持的情况,将此值设为 true 可能会有帮助。有关设置 git 身份验证的更多信息,请参见 Git Authentication

net.offline

  • 类型: 布尔值
  • 默认值: false
  • 环境变量: CARGO_NET_OFFLINE

如果此值为 true,Cargo 将避免访问网络,并尝试使用本地缓存的数据继续执行。如果为 false,Cargo 将在需要时访问网络,如果在遇到网络错误时会生成报错。

可通过命令行选项 --offline 覆盖此设置。

net.ssh

[net.ssh] 表包含 SSH 连接的配置项。

net.ssh.known-hosts

  • 类型: 字符串数组
  • 默认值: 参见描述
  • Environment: 不支持

known-hosts 数组包含一份 SSH 主机密钥列表,用于在连接 SSH 服务器时(例如 SSH git 依赖)验证连接是否可信。每个条目都是一个字符串,格式类似于 OpenSSH 的 known_hosts 文件:开头是一个或多个以逗号分隔的主机名,后跟一个空格、密钥类型名、一个空格,最后是 base64 编码的密钥。例如:

[net.ssh]
known-hosts = [
    "example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFO4Q5T0UV0SQevair9PFwoxY9dl4pQl3u5phoqJH3cF"
]

Cargo 会尝试从 OpenSSH 支持的常见位置加载已知主机密钥,并将其与 Cargo 配置文件中列出的密钥合并。只要任一匹配条目具有正确的密钥,连接就会被允许。

Cargo 内置了 github.com 的主机密钥。如果这些密钥将来发生变化,你可以把新密钥添加到配置文件或 known_hosts 文件中。

更多细节请参阅 Git 认证

[patch]

正如可以在 Cargo.toml 中使用 [patch] 覆盖依赖一样,你也可以在 cargo 配置文件中进行覆盖,从而让这些补丁应用到所有受影响的构建中。格式与 Cargo.toml 中的写法完全相同。

由于 .cargo/config.toml 文件通常不会被提交到版本控制中,因此应尽量优先使用 Cargo.toml 来打补丁,以确保其他开发者能在自己的环境中正常编译你的 crate。通过 cargo 配置文件打补丁一般只在补丁段由外部构建工具自动生成时才合适。

如果同一个依赖同时在 cargo 配置文件和 Cargo.toml 中被打补丁,则使用配置文件中的补丁。如果多个配置文件对同一依赖打补丁,则按标准的 cargo 配置合并规则处理:越靠近当前目录定义的值优先级越高,而 $HOME/.cargo/config.toml 的优先级最低。

此类 [patch] 段中的相对 path 依赖项,相对于其所在的配置文件解析。

[profile]

[profile] 表用于全局修改 Profile 设置,并覆盖 Cargo.toml 中指定的设置。其语法和选项与 Cargo.toml 中定义的 Profile 完全一致。具体选项详情请参见Profiles 章节

[profile.<name>.build-override]

  • 环境变量:CARGO_PROFILE_<name>_BUILD_OVERRIDE_<key>

build-override 表用于覆盖构建脚本、过程宏及其依赖项的设置。它包含与普通 Profile 相同的键。更多详情请参见overrides 部分

[profile.<name>.package.<name>]

  • 环境变量:不支持

package 表用于覆盖特定包的设置。它包含与普通 Profile 相同的键,但不包括 panicltorpath 设置。更多详情请参见overrides 部分

profile.<name>.codegen-units

  • 类型:整数
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_CODEGEN_UNITS

参见 codegen-units

profile.<name>.debug

  • 类型:整数或布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_DEBUG

参见 debug

profile.<name>.split-debuginfo

  • 类型:字符串
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_SPLIT_DEBUGINFO

参见 split-debuginfo

profile.<name>.debug-assertions

  • 类型:布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_DEBUG_ASSERTIONS

参见 debug-assertions

profile.<name>.incremental

  • 类型:布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_INCREMENTAL

参见 incremental

profile.<name>.lto

  • 类型:字符串或布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_LTO

参见 lto

profile.<name>.overflow-checks

  • 类型:布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_OVERFLOW_CHECKS

参见 overflow-checks

profile.<name>.opt-level

  • 类型:整数或字符串
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_OPT_LEVEL

参见 opt-level

profile.<name>.panic

  • 类型:字符串
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_PANIC

参见 panic

profile.<name>.rpath

  • 类型:布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_RPATH

参见 rpath

profile.<name>.strip

  • 类型:字符串或布尔值
  • 默认值:参见 Profile 文档。
  • 环境变量:CARGO_PROFILE_<name>_STRIP

参见 strip

[resolver]

[resolver] 表用于在本地开发时覆盖 依赖解析行为(例如排除 cargo install)。

resolver.lockfile-path

  • 类型:字符串(路径)
  • 默认值:<workspace_root>/Cargo.lock
  • 环境变量:CARGO_RESOLVER_LOCKFILE_PATH

指定解析依赖时使用的 lockfile 路径。 此选项在处理只读源码目录时非常有用。

路径必须以 Cargo.lock 结尾。

MSRV:要求 1.97+

resolver.incompatible-rust-versions

  • 类型:string
  • 默认值:见 resolver 文档
  • 环境变量:CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS

在解析依赖使用哪个版本时,该配置决定如何处理与 package.rust-version 不兼容的版本。可选值包括:

  • allow:把不兼容 rust-version 的版本当作普通版本对待
  • fallback:仅在没有其他版本匹配时,才考虑不兼容 rust-version 的版本

以下方式可以覆盖该配置:

  • --ignore-rust-version 命令行选项
  • 把依赖的版本要求设为高于所有具有兼容 rust-version 的版本
  • cargo update 时用 --precise 指定版本

更多细节见 resolver 章节。

MSRV:

  • allow 在任何版本都可用
  • fallback 从 1.84 开始生效

[registries]

[registries] 表用于配置额外的 registry,每个具名 registry 对应一个子表。

registries.<name>.index

  • 类型:string(url)
  • 默认值:无
  • 环境变量:CARGO_REGISTRIES_<name>_INDEX

指定该 registry 的索引 URL。

registries.<name>.token

  • 类型:string
  • 默认值:无
  • 环境变量:CARGO_REGISTRIES_<name>_TOKEN

指定对应 registry 的认证令牌。这个值只应出现在 credentials 文件中,供 cargo publish 等需要认证的 registry 命令使用。

可通过 --token 命令行选项覆盖。

registries.<name>.credential-provider

  • 类型:字符串,或包含路径和参数的数组
  • 默认值:无
  • 环境变量:CARGO_REGISTRIES_<name>_CREDENTIAL_PROVIDER

指定给定注册表的凭证提供程序。若未设置,将使用 registry.global-credential-providers 中定义提供程序。

若指定为字符串,路径和参数将以空格分割。对于包含空格的路径或参数,请使用数组形式。

若该值存在于 [credential-alias] 表中,将使用对应的别名。

有关注册表身份验证的更多信息,请参阅Registry Authentication

registries.crates-io.protocol

  • 类型:字符串
  • 默认值:"sparse"
  • 环境变量:CARGO_REGISTRIES_CRATES_IO_PROTOCOL

指定访问 crates.io 时使用的协议。允许的值为 gitsparse

git 会促使 Cargo 从 https://github.com/rust-lang/crates.io-index/ 克隆已发布至 crates.io 的所有包的完整索引。由于索引体积较大,这可能影响性能。sparse 是一种较新的协议,通过 HTTPS 从 https://index.crates.io/ 仅下载必要内容。在大多数情况下,这能显著改善解析新依赖项时的性能。

有关注册表协议的更多信息,可在Registries 章节中找到。

[registry]

[registry] 表控制未指定时所使用的默认注册表。

registry.index

该值已不再被接受,不应使用。

registry.default

  • 类型:字符串
  • 默认值:"crates-io"
  • 环境变量:CARGO_REGISTRY_DEFAULT

默认用于 cargo publish 等注册表命令的注册表名称(取自 registries 表)。

可通过 --registry 命令行选项覆盖。

registry.credential-provider

  • 类型:字符串或路径及参数数组
  • 默认值:无
  • 环境变量:CARGO_REGISTRY_CREDENTIAL_PROVIDER

指定 crates.io 的凭证提供者。如果未设置,将使用 registry.global-credential-providers 中定义的提供者。

若指定为字符串,路径和参数将按空格拆分。对于包含空格的路径或参数,请使用数组形式。

若该值存在于 [credential-alias] 表中,则会使用对应的别名。

更多信息请参考 注册表认证

registry.token

  • 类型:字符串
  • 默认值:无
  • 环境变量:CARGO_REGISTRY_TOKEN

指定 crates.io 的认证令牌。该值应仅出现在 凭证文件 中。它用于 cargo publish 等需要认证的注册表命令。

可通过 --token 命令行选项覆盖。

registry.global-credential-providers

  • 类型:数组
  • 默认值:["cargo:token"]
  • 环境变量:CARGO_REGISTRY_GLOBAL_CREDENTIAL_PROVIDERS

指定全局凭证提供者列表。如果未通过 registries.<name>.credential-provider 为特定注册表设置凭证提供者,Cargo 将使用此列表中的提供者。列表中靠后的提供者优先级更高。

路径和参数按空格拆分。若路径或参数包含空格,应在 [credential-alias] 表中定义该凭证提供者,并在此处通过别名引用。

更多信息参见Registry Authentication

[source]

[source] 表定义可用的 registry 源,详见Source Replacement。它由每个命名源对应的子表组成。每个源只能定义一种类型(directory、registry、local-registry 或 git)。

source.<name>.replace-with

  • 类型:string
  • 默认值:无
  • 环境变量:不支持

设置后,会用指定的命名源或命名 registry 替换此源。

source.<name>.directory

  • 类型:string(路径)
  • 默认值:无
  • 环境变量:不支持

设置用作 directory 源的目录路径。

source.<name>.registry

  • 类型:string(URL)
  • 默认值:无
  • 环境变量:不支持

设置 registry 源使用的 URL。

source.<name>.local-registry

  • 类型:string(路径)
  • 默认值:无
  • 环境变量:不支持

设置用作 local registry 源的目录路径。

source.<name>.git

  • 类型:string(URL)
  • 默认值:无
  • 环境变量:不支持

设置 git 仓库源使用的 URL。

source.<name>.branch

  • 类型:string
  • 默认值:无
  • 环境变量:不支持

设置 git 仓库使用的分支名。

如果 branchtagrev 都未设置,默认使用 master 分支。

source.<name>.tag

  • 类型:string
  • 默认值:无
  • 环境变量:不支持

设置 git 仓库使用的 tag 名。

如果 branchtagrev 都未设置,默认使用 master 分支。

source.<name>.rev

  • 类型:string
  • 默认值:无
  • 环境变量:不支持

设置 git 仓库使用的版本

如果未设置 branchtagrev,则默认使用 master 分支。

[target]

[target] 表用于指定特定平台目标的配置。它由一个子表组成,该子表要么是平台三元组,要么是cfg() 表达式。如果目标平台匹配 <triple> 值或 <cfg> 表达式,则使用给定的值。

[target.thumbv7m-none-eabi]
linker = "arm-none-eabi-gcc"
runner = "my-emulator"
rustflags = ["…", "…"]

[target.'cfg(all(target_arch = "arm", target_os = "none"))']
runner = "my-arm-wrapper"
rustflags = ["…", "…"]

cfg 值源自编译器内置值(运行 rustc --print=cfg 可查看)以及传递给 rustc 的额外 --cfg 标志(例如在 RUSTFLAGS 中定义的那些)。不要尝试匹配 debug_assertionstest、Cargo 特性(如 feature="foo")或构建脚本设置的值。

如果使用目标规范 JSON 文件,<triple> 值是文件名主干。例如 --target foo/bar.json 将匹配 [target.bar]

target.<triple>.ar

此选项已弃用且未被使用。

target.<triple>.linker

  • 类型:字符串(程序路径)
  • 默认值:无
  • 环境变量:CARGO_TARGET_<triple>_LINKER

指定当为<triple>编译时传递给 rustc(通过-C linker)的链接器。默认情况下,不覆盖链接器。

target.<cfg>.linker

这与目标链接器类似,但使用的是cfg() 表达式。如果同时匹配了<triple><cfg>链接器,<triple>优先生效。若有多个<cfg>链接器匹配当前目标,则会引发错误。

target.<triple>.runner

  • 类型:字符串或字符串数组(带参数的程序路径
  • 默认值:无
  • 环境变量:CARGO_TARGET_<triple>_RUNNER

若指定了 runner,针对<triple>目标的可执行文件将通过调用该 runner 来运行,实际的可执行文件作为参数传入。这适用于cargo runcargo testcargo bench命令。默认情况下,编译出的可执行文件会被直接执行。

target.<cfg>.runner

这与目标 runner类似,但使用的是cfg() 表达式。如果同时匹配了<triple><cfg> runner,<triple>优先生效。若有多个<cfg> runner 匹配当前目标,则会引发错误。

target.<triple>.rustflags

  • 类型:字符串或字符串数组
  • 默认值:无
  • 环境变量:CARGO_TARGET_<triple>_RUSTFLAGS

向编译器传递针对此<triple>的一组自定义标志。值可以是字符串数组,也可以是空格分隔的字符串。

有关指定额外标志的不同方法,请参阅build.rustflags以获取更多细节。

target.<cfg>.rustflags

这与 target rustflags 类似,但使用的是 cfg() 表达式。如果当前目标同时匹配多个 <cfg><triple> 条目,这些 flag 会被合并在一起。

target.<triple>.rustdocflags

  • 类型:字符串或字符串数组
  • 默认值:无
  • 环境变量:CARGO_TARGET_<triple>_RUSTDOCFLAGS

为该 <triple> 向编译器传递一组自定义 flag。值可以是字符串数组,也可以是空格分隔的字符串。

指定额外 flag 的各种方式详见 build.rustdocflags

target.<cfg>.rustdocflags

这与 target rustdocflags 类似,但使用的是 cfg() 表达式。如果当前目标同时匹配多个 <cfg><triple> 条目,这些 flag 会被合并在一起。

links 子表提供了一种覆盖 build script 的方式。指定后,给定 links 库对应的 build script 将不会运行,而是使用这里给定的值。

[target.x86_64-unknown-linux-gnu.foo]
rustc-link-lib = ["foo"]
rustc-link-search = ["/path/to/foo"]
rustc-flags = "-L /some/path"
rustc-cfg = ['key="value"']
rustc-env = {key = "value"}
rustc-cdylib-link-arg = ["…"]
metadata_key1 = "value"
metadata_key2 = "value"

[term]

[term] 表用于控制终端输出与交互。

term.quiet

  • 类型:布尔值
  • 默认值:false
  • 环境变量:CARGO_TERM_QUIET

控制 Cargo 是否显示日志信息。

指定 --quiet 标志会覆盖其他设置并强制静默输出。 指定 --verbose 标志会覆盖其他设置并禁用静默输出。

term.verbose

  • 类型:布尔值
  • 默认值:false
  • 环境变量:CARGO_TERM_VERBOSE

控制 Cargo 是否显示额外的详细信息消息。

指定 --quiet 标志会覆盖其他设置并禁用详细输出。 指定 --verbose 标志会覆盖其他设置并强制详细输出。

term.color

  • 类型:字符串
  • 默认值:"auto"
  • 环境变量:CARGO_TERM_COLOR

控制终端是否使用彩色输出。可能的取值:

  • auto(默认):自动检测终端是否支持彩色输出。
  • always:始终显示颜色。
  • never:从不显示颜色。

可以通过 --color 命令行选项进行覆盖。

  • 类型:布尔值
  • 默认值:自动检测
  • 环境变量:CARGO_TERM_HYPERLINKS

控制终端是否使用超链接。

term.unicode

  • 类型:布尔值
  • 默认值:自动检测
  • 环境变量:CARGO_TERM_UNICODE

控制输出是否可以使用非 ASCII 的 Unicode 字符渲染。

term.progress.when

  • 类型:字符串
  • 默认值:"auto"
  • 环境变量:CARGO_TERM_PROGRESS_WHEN

控制终端是否显示进度条。可能的取值:

  • auto(默认):智能判断是否显示进度条。
  • always:始终显示进度条。
  • never:从不显示进度条。

term.progress.width

  • 类型:整数
  • 默认值:无
  • 环境变量:CARGO_TERM_PROGRESS_WIDTH

设置进度条的宽度。

term.progress.term-integration

  • 类型:布尔值
  • 默认值:自动检测
  • 环境变量:CARGO_TERM_PROGRESS_TERM_INTEGRATION

向终端模拟器报告进度,以便在任务栏等位置显示。

评论 (0)