有条件地一次只编译一个模块

时间:2015-06-17 11:26:23

标签: rust

有时重构其中一个模块的更改会对其他模块(或许多其他模块)产生影响,因为说类型已更改或函数参数已更改等等。在这种情况下,不要更改所有内容然后再更改立即编译是否有一种方法可以编译和运行单个测试仅针对特定模块,将其调整为心脏内容,当所有正确更改其他模块等并运行完整/正常cargo build/test?当然,其中一种方法可能是在相应的根模块中手动注释/取消注释模块列表,但是有没有其他方法直接来自cargo test --someflag -only_this_module或其他什么?

解释更多:

说我有以下模块: a, b, c, d, e, f, g, h其中f仅取决于gha, b, c, d, e的其余部分取决于f(可能还有g和{ {1}}但这应该不重要)。 hg当然不依赖于上面的任何内容。因此,如果我对h进行更改,我只想编译f并在不更改所有内容的情况下对其进行测试。由于f仅取决于fg,我认为如果这三个方面的情况正常,那么我应该能够测试h,即使fa, b ... e如果我执行正常cargo build/test,则破坏和包装将无法编译。这可能。

1 个答案:

答案 0 :(得分:4)

您可以通过将其作为测试二进制文件的参数提供,专门针对一个模块运行测试。如果你在--之后指定它,那么Cargo会将参数传递给测试二进制文件,所以这样的东西应该可以工作:

cargo test -- module::you::want::to::test

但是,您无法编译只有一部分箱子。 Rust中的Crates是编译单元,比如C中的.c文件,你不能编译它的一半而忽略另一半。