搞清楚cargo build of the same code: spurious compile time errors?后,我想知道如何防止这样的问题:如何防止Cargo将不同特征合并成相同的依赖关系?
$ cargo new feature_merge
$ cargo add nmea
$ cargo check > /dev/null 2>&1 && echo "success"
success
$ cargo add cexpr
$ cargo check > /dev/null 2>&1 || echo "failed"
failed
$ cargo rm cexpr && cargo check > /dev/null 2>&1 && echo "success"
success
我删除/添加的依赖,没有任何代码修改,这会影响构建结果。
的问题,as I described源,是cexpr取决于NOM这样的:
nom = {version = "^3", features = ["verbose-errors"] }
而nmea描述这样的依赖关系:由于只有NMEA
nom = "3.1.0"
作为依赖,货物使用一组功能创建标准, ,而Cargo则用另一组功能构建针对标称的cexpr和nmea。
我想要一种方法来防止我维护的nmea箱子的这种错误用法。
我想编译时间错误,如"`nom` compiled with wrong features"
,或强制Cargo构建两个nom的变体。
我nmea/Cargo.toml
试过这样的事情:
nom = { version = "3.1.0", default-features = false }
这什么都没有改变;当cexpr和nmea结合时仍然存在编译时错误。
这里可能值得有更多专业知识的人参与;也许你应该考虑将问题交叉发布到r/rust或者rust用户论坛,甚至在货物github仓库中打开一个bug。 –
@MatthieuM。我发布了https:// github。com/rust-lang/charge/issues/4323 – fghj