7 个版本 (重大更新)

0.15.0 2020年10月21日
0.14.0 2019年12月19日
0.13.0 2019年10月24日
0.12.0 2019年8月23日
0.10.1 2019年4月16日

#505 in 编程语言

每月下载量 21 次

BSD-3-Clause

2MB
40K SLoC

Rust 34K SLoC // 0.1% comments Python 3.5K SLoC // 0.2% comments Lua 2K SLoC // 0.1% comments Vim Script 200 SLoC // 0.0% comments Shell 8 SLoC // 0.2% comments

Docs

C2Rust 代码重构工具

这是一个针对 Rust 程序的代码重构工具,旨在从自动生成的 Rust 代码中移除不安全性。

用法

c2rust refactor 命令行用法如下

c2rust refactor [flags] <command> [command args] -- <input file> [rustc flags]

c2rust refactor --help 描述了 c2rust refactor 的标志。

有关命令列表、完整用法和描述,请参阅 命令文档(在线手册)。多个命令可以通过单个分号分隔,例如 c2rust refactor cmd1 arg1 ; cmd2 arg2。 (注意分号需要转义,以防止它被 shell 解释。)

c2rust refactor 需要为要重构的程序提供 rustc 命令行参数,以便它可以使用 rustc 加载和类型检查源代码。对于使用 cargo 构建的项目,将 --cargo 标志传递给 c2rust refactor,它将自动从 cargo 获取正确的参数。否则,您必须在 c2rust refactor 命令行中提供 rustc 参数,在 -- 分隔符之后。

标记

一些命令需要用户对某些 AST 节点进行“标记”,以便它能够操作。例如,rename_struct 命令需要用户标记要重命名的结构的声明。

每个标记将一个“标签”与一个特定的 AST 节点(通过其 NodeId 标识)相关联。标签用于区分不同类型的标记,并且单个节点可以具有任何数量的具有不同标签的标记。例如,当运行将函数转换为 inherent impl 中的方法的 func_to_method 命令时,用户必须使用 target 标签标记要移动的函数,并必须使用 dest 标签标记目标 impl。带有其他标签的节点将被忽略。命令所识别的标签集合在命令的文档中描述;默认情况下,大多数使用标记的命令在 target 上操作。

标记节点的最灵活的方法是使用 select 命令。有关详细信息,请参阅命令文档和 src/select/mod.rs。请注意,标记在 c2rust refactor 调用之间不会保留,因此您通常希望运行 select 后跟上述提到的 ; 分隔符以及感兴趣的命令。

依赖项

~37–49MB
~1M SLoC