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 次
2MB
40K SLoC
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