Cargo.toml 约定

格式化约定

使用与 Rust 代码相同的行宽和缩进。

在节中最后一个键值对与下一节的标题之间放置一个空行。不要在节标题与该节中的键值对之间,或在节中的键值对之间放置空行。

对每个节内的键名进行版本排序,除了 [package] 节。将 [package] 节放在文件顶部;将 nameversion 键按此顺序放在该节的顶部,然后是除了 description 之外的其余键,最后是该节末尾的 description

不要在任何标准键名周围使用引号;使用裸键。仅对名称需要它们的非标准键使用带引号的键,并尽量避免引入此类键名。有关详细信息,请参阅 TOML 规范

在键和值之间的 = 前后都放置一个空格。不要缩进任何键名;所有键名都从行的开头开始。

对于包含多行的任何字符串值,例如 crate 描述,请使用多行字符串(而不是换行符转义序列)。

对于数组值,例如功能列表,如果适合,则将整个列表与键放在同一行。否则,使用块缩进:在左方括号后放置一个换行符,将每个项目缩进一级,在每个项目后放置一个逗号(包括最后一个),并将右方括号放在最后一个项目后单独一行的开头。

#![allow(unused)]
fn main() {
some_feature = [
    "another_feature",
    "yet_another_feature",
    "some_dependency?/some_feature",
]
}

对于表值,例如带有路径的 crate 依赖项,如果适合,则使用花括号和逗号将整个表写在与键相同的行上。如果整个表不适合放在与键相同的行上,则将其拆分为单独的节,其中包含键值对

[dependencies]
crate1 = { path = "crate1", version = "1.2.3" }

[dependencies.extremely_long_crate_name_goes_here]
path = "extremely_long_path_name_goes_right_here"
version = "4.5.6"

元数据约定

作者列表(如果存在)应包含字符串,每个字符串都包含作者姓名,后跟尖括号中的电子邮件地址:全名 <email@address>。它不应包含裸电子邮件地址,或没有电子邮件地址的姓名。(作者列表也可以包含没有关联姓名的邮件列表地址。)

许可证字段必须包含有效的 SPDX 表达式,使用有效的 SPDX 许可证名称。(作为例外,根据广泛的约定,许可证字段可以使用 / 代替 OR;例如,MIT/Apache-2.0。)

主页字段(如果存在)必须包含单个 URL,包括方案(例如,https://example.org/,而不仅仅是 example.org。)

在描述字段中,将文本包裹在 80 列中。不要以 crate 的名称开始描述字段(例如,“cratename is a ...”);只需描述 crate 本身。如果提供多句描述,第一句应该单独一行并总结 crate,就像电子邮件或提交消息的主题;随后的句子可以更详细地描述 crate。