如cargo check
所示,通常在不实际生成代码的情况下检查程序是否格式正确(这通常是一项非常耗时的任务),通常很有用。我想直接用rustc
检查一个(库)Rust文件(我不能使用Cargo!)。
cargo check
显然可以这样调用:
rustc --emit=metadata -Z no-codegen
这仅发出元数据,一个.rmeta
文件。货物实际上需要根据已检查的板条箱检查板条箱。就我而言,我真的不需要元数据文件。
我尝试了以下操作:
rustc --crate-type=lib --emit=
rustc --crate-type=lib --emit=nothing
但是两者都没有用。我使用--crate-type=lib
是因为我的文件没有main
函数。我需要一个独立于平台的解决方案(我不仅要在我的机器上使用它,还要在公共脚本中使用它。)
如何使rustc
不写单个文件?
答案 0 :(得分:2)
要引述my own GitHub comment这个问题,有一些用于稳定Rust的选项:
rustc --emit=mir -o /dev/null
似乎可以在1.18及更高版本中使用,什么也没写。 (--emit=mir
是唯一有用的--emit
选项;其他人尝试创建/dev/null.foo0.rcgu.o
之类的傻文件,但--emit=dep-info
除外,后者不进行检查。)rustc -C extra-filename=-tmp -C linker=true
(即使用/bin/true
作为“链接器”)似乎在所有版本中都可以使用,可以编写一些中间文件,但可以清理它们。rustc --out-dir=<new empty temporary directory>
不太聪明,因此可能不太可能崩溃?请注意,前两个选项(也不是每晚仅-Zno-codegen
选项)将找不到链接器错误(如果有的话)。
答案 1 :(得分:1)
您可以跳过account_status.id.id
标志。
最后的命令将是:--emit