第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
- Windows:
借助这种结构,你可以为每个包单独指定配置,甚至可以将其纳入版本控制。也可以在用户主目录中放置配置文件来指定个人默认配置。
如果同一个键出现在多个配置文件中,这些值会被合并:数字、字符串和布尔值以更深层目录中的值为准,父目录的值会被覆盖,主目录的优先级最低。数组则会拼接在一起,优先级高的条目排在合并后数组的后面。
目前,在 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 的合并行为与其他配置值不同:
- 首先从
include路径加载配置值。- 按从左到右的顺序加载被引入的文件,后续文件的值优先于前序文件。
- 如果被包含的配置文件中也有
include键,此步骤会递归执行。
- 随后,配置文件自身的值会合并到被包含的配置之上,具有最高优先级。
相对于配置的路径
配置文件中的路径可以是绝对路径、相对路径,或者是没有任何路径分隔符的名称。
对于可执行文件,如果不带路径分隔符,将使用 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 login 和 cargo 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_RUSTC或RUSTC
设置用于 rustc 的可执行程序。
build.rustc-wrapper
- 类型:字符串(程序路径)
- 默认值:无
- 环境变量:
CARGO_BUILD_RUSTC_WRAPPER或RUSTC_WRAPPER
设置用于替代 rustc 执行的包装器。传递给包装器的第一个参数是实际可执行程序的路径(即若设置了 build.rustc 则为该值,否则为 "rustc")。
build.rustc-workspace-wrapper
- 类型:字符串(程序路径)
- 默认值:无
- 环境变量:
CARGO_BUILD_RUSTC_WORKSPACE_WRAPPER或RUSTC_WORKSPACE_WRAPPER
设置仅针对工作区成员替代 rustc 执行的包装器。当构建无工作区的单包项目时,该包被视为工作区。传递给包装器的第一个参数是实际可执行程序的路径(即若设置了 build.rustc 则为该值,否则为 "rustc")。它会影响文件名哈希,使得包装器生成的工件单独缓存。
若同时设置了 rustc-wrapper 和 rustc-workspace-wrapper,它们将嵌套执行:最终调用顺序为 $RUSTC_WRAPPER $RUSTC_WORKSPACE_WRAPPER $RUSTC。
build.rustdoc
- 类型:字符串(程序路径)
- 默认值:
"rustdoc" - 环境变量:
CARGO_BUILD_RUSTDOC或RUSTDOC
设置用于 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_DIR或CARGO_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_RUSTFLAGS或CARGO_ENCODED_RUSTFLAGS或RUSTFLAGS
传递给 rustc 的额外命令行参数。其值可以是字符串数组,也可以是空格分隔的字符串。
额外参数有四种互斥的来源。系统按以下顺序检查,并采用最先找到的那一个:
CARGO_ENCODED_RUSTFLAGS环境变量。RUSTFLAGS环境变量。- 所有匹配的
target.<triple>.rustflags和target.<cfg>.rustflags配置项合并后的结果。 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_RUSTDOCFLAGS或CARGO_ENCODED_RUSTDOCFLAGS或RUSTDOCFLAGS
传递给 rustdoc 的额外命令行参数。值可以是字符串数组,也可以是空格分隔的字符串。
额外的参数共有四个来源,彼此互斥。系统按以下顺序检查,并采用第一个找到的来源:
CARGO_ENCODED_RUSTDOCFLAGS环境变量。RUSTDOCFLAGS环境变量。- 所有匹配的
target.<triple>.rustdocflags和target.<cfg>.rustdocflags配置项合并后的结果。 build.rustdocflags配置值。
也可以通过 cargo rustdoc 命令传递额外的参数。
注意:由于直接向编译器传递参数属于底层操作,可能与未来 Cargo 版本自动发出的相同或类似参数发生冲突,进而干扰你指定的参数。Cargo 在此方面可能不具备完全的后向兼容性。
build.incremental
- 类型:bool
- 默认值:取自 profile
- 环境变量:
CARGO_BUILD_INCREMENTAL或CARGO_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
指定初始化新仓库时使用的源代码控制系统。
有效值为 git、hg(用于 Mercurial)、pijul、fossil 或 none 以禁用此行为。默认值为 git;若当前已在某个 VCS 仓库内,则默认为 none。可通过 --vcs 命令行选项覆盖。
[env]
[env] 部分允许你为构建脚本、rustc 调用、cargo run 和 cargo 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 build、cargo test、cargo 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_PROXY、HTTPS_PROXY、https_proxy或http_proxy
设置 HTTP 和 HTTPS 代理。格式为 libcurl 格式,即 [protocol://]host[:port]。如果未设置,Cargo 还会读取全局 git 配置中的 http.proxy 设置。若这些都没设置,则 HTTPS_PROXY 或 https_proxy 环境变量用于 HTTPS 请求的代理,http_proxy 用于 HTTP 请求的代理。
http.timeout
- 类型:integer
- 默认值:30
- 环境变量:
CARGO_HTTP_TIMEOUT或HTTP_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"。
也可以传入一个包含 min 和 max 两个键值的表格,分别指定最小和最大 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 相同的键,但不包括 panic、lto 和 rpath 设置。更多详情请参见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 时使用的协议。允许的值为 git 或 sparse。
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 仓库使用的分支名。
如果 branch、tag、rev 都未设置,默认使用 master 分支。
source.<name>.tag
- 类型:string
- 默认值:无
- 环境变量:不支持
设置 git 仓库使用的 tag 名。
如果 branch、tag、rev 都未设置,默认使用 master 分支。
source.<name>.rev
- 类型:string
- 默认值:无
- 环境变量:不支持
设置 git 仓库使用的版本。
如果未设置 branch、tag 或 rev,则默认使用 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_assertions、test、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 run、cargo test和cargo 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 会被合并在一起。
target.<triple>.<links>
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 命令行选项进行覆盖。
term.hyperlinks
- 类型:布尔值
- 默认值:自动检测
- 环境变量:
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
向终端模拟器报告进度,以便在任务栏等位置显示。