如图cargo check所示,检查程序是否格式正确而不实际生成代码(通常非常耗时的任务)通常很有用.我想直接检查单个(库)Rust文件rustc(我不能使用Cargo!).
cargo check 显然通过调用这个来工作:
rustc --emit=metadata -Z no-codegen
Run Code Online (Sandbox Code Playgroud)
这只发出元数据,一个.rmeta文件.货物实际上需要根据已检查的箱子检查包装箱.在我的情况下,我真的不需要元数据文件.
我尝试了以下方法:
rustc --crate-type=lib --emit=
rustc --crate-type=lib --emit=nothing
Run Code Online (Sandbox Code Playgroud)
但两者都没有用.我使用--crate-type=lib是因为我的文件没有main功能.我需要一个独立于平台的解决方案(我不只是想在我的机器上使用它,而是在公共脚本中使用它).
如何rustc不写单个文件?
引用我自己关于这个问题的 GitHub 评论,稳定 Rust 有几个选项:
\n\nrustc --emit=mir -o /dev/null似乎可以在 1.18 及更高版本中工作,无需编写任何内容。(--emit=mir是唯一有用的--emit选项\xe2\x80\x94,其他人尝试创建愚蠢的文件,例如/dev/null.foo0.rcgu.o, except --emit=dep-info,它不进行检查。)rustc -C extra-filename=-tmp -C linker=true(即用作/bin/true\xe2\x80\x9clinker\xe2\x80\x9d)似乎适用于所有版本,编写一些中间文件但清理它们。rustc --out-dir=<new empty temporary directory>不那么聪明,因此也许不太可能崩溃?请注意,前两个选项(也不是仅夜间选项)不会发现链接器错误(如果有-Zno-codegen)。
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |