Cargo.toml
约定
格式化约定
使用与 Rust 代码相同的行宽和缩进。
在节中最后一个键值对与下一节的标题之间放置一个空行。不要在节标题与该节中的键值对之间,或在节中的键值对之间放置空行。
对每个节内的键名进行版本排序,除了 [package]
节。将 [package]
节放在文件顶部;将 name
和 version
键按此顺序放在该节的顶部,然后是除了 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。