#unused #remove #cargo #generated #minify #generated-bindings #aimed

app cargo-minify

一个用于自动从 Rust 项目中删除未使用代码的 cargo 工具

1 个不稳定版本

0.5.0 2023 年 12 月 1 日

#320Cargo 插件

Apache-2.0 OR MIT

48KB
1K SLoC

cargo-minify

从您的 Rust 程序中删除未使用的代码。主要针对生成的代码(最佳示例:bindgen 生成的绑定),但也适用于更广泛的场景。

限制

库中的公共函数和类型(这很有意义),以及在二进制文件和示例中也不认为是未使用的,还包括显式允许未使用的代码(使用 #[allow(unused)])。

安装

git clone [email protected]:tweedegolf/cargo-minify.git
cargo install --path cargo-minify

用法

安装后,您可以从 crate 根目录简单地通过键入 cargo minify 运行此工具。这将运行您的项目,并将打印出将对您的代码进行的任何更改。

要实际应用这些更改,您必须运行 cargo minify --apply

您可以使用 --ignore 选项执行更精确的压缩,后跟通配符指定。排除的文件中的未使用代码将不会被修改。您还可以使用 --kinds 标志来指定要删除的未使用代码类型。支持的类型包括

  • FUNCTION,这将删除未使用的函数定义
  • ASSOCIATED_FUNCTION,这将删除从 impl 块中未使用的关联函数
  • STRUCTENUMUNION,这将删除相应类型未使用的类型定义
  • TYPE_ALIAS,这将删除未使用的类型别名
  • CONST,这将删除未使用的常量
  • STATIC,这将删除未使用的静态变量

如果没有指定任何 --kinds,上述所有内容都将被移除。

cargo minify --apply 期望你的文件处于版本控制之下;如果并非如此,将会给出警告并且不会进行任何更改;可以使用 --allow-no-vcs--allow-dirty--allow-staged 标志来覆盖。

当然,您也可以通过运行 cargo minify --help 来查看此信息(以及其他选项)。

未来工作

待添加到 cargo minify

  • 移除未使用的 static 变量。
  • 检测并移除未使用的派生特质。

许可证

许可协议为以下之一

根据您的要求。

贡献

除非您明确说明,否则您提交的任何贡献,按照 Apache-2.0 许可证的定义,将按照上述协议双重许可,不附加任何额外条款或条件。

依赖关系

~9–20MB
~329K SLoC