Rust-开发必备-cargo_sort-一键整理你的cargo.toml

前言

Cargo.toml 是 Rust 语言的核心配置文件,由官方构建工具 Cargo 使用,用于管理项目的元数据、依赖关系、构建配置等。它是 Rust 项目的"清单文件",类似于其他语言中的 package.json(JavaScript)或 pom.xml(Java)。

不知道你是否有过这样的经历:当你打开一个项目,被眼前杂乱的依赖配置触动了你的强迫症,不可避免地花时间又整理了一番。

如下是一个toml示例,而实际的工程中的场景往往比这个示例中的更加糟糕:

toml 复制代码
[package]
name = "learn_rust"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
derive_more = { version = "2.0.1", features = ["display"] }
strum = { version = "0.27.1", features = ["derive"] }
strum_macros = "0.27.1"
anyhow = "1.0.98"
serde = "1.0.219"
serde_json = "1.0.140"
tokio = "1.44.2"
actix-web = "4.10.2"
clap = "4.5.37"
mongodb = "3.2.3"
redis = "0.30.0"

在没有变遭之前,通过cargo指令管理你的依赖配置

如果你是一个项目的创建者,那么你可以在一切无法挽回之前,通过cargo命令来使得你的cargo.toml中的依赖配置看起来井然有序。

通过cargo add来添加你的项目依赖,在依赖配置有序的情况下会按序添加至cargo.toml中:

shell 复制代码
cargo add [OPTIONS] <DEP>[@<VERSION>] ...

cargo add [OPTIONS] --path <PATH> ...

cargo add [OPTIONS] --git <URL> ...

通过cargo remove来移除不需要的项目依赖:

shell 复制代码
cargo remove [OPTIONS] <DEP_ID>...

更多命令相关介绍可以通过cargo help addcargo help remove或者通过Cargo Book来查看。

这个方法只有在项目还在你的"掌握"之中的情况下才有效。就像示例中的情况,此时即使通过cargo add来添加新的依赖,只会在新增的依赖配置中保持有序,无法改变原有糟糕的依赖配置情况。

通过cargo-sort来排序你的依赖配置

cargo-sort用来使你的项目依赖能够按字典序进行排列。

安装

通过如下命令进行安装:

shell 复制代码
cargo install cargo-sort

使用

通过如下命令来排序示例中的依赖配置:

shell 复制代码
cargo sort

使用后的cargo.toml:

toml 复制代码
[package]
name = "learn_rust"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
actix-web = "4.10.2"
anyhow = "1.0.98"
clap = "4.5.37"
derive_more = { version = "2.0.1", features = ["display"] }
mongodb = "3.2.3"
redis = "0.30.0"
serde = "1.0.219"
serde_json = "1.0.140"
strum = { version = "0.27.1", features = ["derive"] }
strum_macros = "0.27.1"
tokio = "1.44.2"

程序员的强迫症终于有救了。

另一个常用命令是使你项目中workspace内的所有cargo.toml进行排序:

shell 复制代码
cargo sort -w

更多

指令

cargo-sort更多指令讲解:

选项 完整写法 功能描述
不设置任何标志时,cargo - sort 会将排序后的结果覆盖写入输入的 Cargo.toml 文件
-c --check 如果文件未排序,将以非零退出码报错
-n --no - format 不对排序后的 toml 文件进行格式化。此选项仅在写入或打印输出时有效
--check - format --check - format 检查排序后原始输入文件是否未发生变化
-g --grouped 排序时保留表键值间距。如果存在依赖组,它们将保持在一起并在组内进行排序。需 key_value_newlines 配置选项为 true 才会生效
-p --print 将排序后的 toml 文件输出到标准输出
-w --workspace 根据标志检查工作区中的每个 crate。只能指定一个根目录
-o --order 指定表的排序顺序。所有嵌套表都将被排序并出现在指定表之后。任何未指定的表将排在指定表之后

配置

cargo-sort也可以通过tomlfmt.toml进行配置:

toml 复制代码
# 数组中的尾随逗号
always_trailing_comma = false
# 多行时的尾随逗号
multiline_trailing_comma = true
# 数组对象字符串的最大字节长度
max_array_line_len = 80
# 缩进的空格数
indent_count = 4
# 等号周围是否有空格
space_around_eq = true
# 去除数组内部的所有间距
compact_arrays = false
# 去除对象内部的所有间距
compact_inline_tables = false
trailing_newline = true
# 表格内部允许存在空行
# 此选项需为true,--grouped标志才有效
key_value_newlines = true
允许的空行数 = 1
# Windows风格的行尾格式(回车换行)
crlf = false
# 用户指定的文档中表格的排序顺序。
# 所有未指定的表格将排在这些之后。
table_order = [] 
相关推荐
广龙宇24 分钟前
【一起学Rust】使用Thunk工具链实现Rust应用对Windows XP/7的兼容性适配实战
开发语言·windows·rust
UestcXiye31 分钟前
Rust 学习笔记:安装 Rust
rust
CHQIUU2 小时前
【Rust 精进之路之第2篇-初体验】安装、配置与 Hello Cargo:踏出 Rust 开发第一步
rust
苏近之2 小时前
Rust 重构 Rust:枚举和模式匹配
rust·代码规范
liyu113 小时前
Tauri 2.x 版本 辅助性 Accessory App 如何实现单例模式 (MAC & Windows)
rust
景天科技苑3 小时前
【Rust所有权机制】Rust所有权机制详细解析与应用实战
开发语言·后端·rust·rust所有权·引用与借用·rust内存安全
muyouking1114 小时前
5.Rust+Axum:打造高效错误处理与响应转换机制
开发语言·后端·rust
songroom14 小时前
Rust: 从内存地址信息看内存布局
开发语言·后端·rust
用户099691880181 天前
rust 获取 hugging face 模型 chat template
rust