假设您有一个名为“dep”的依赖项,它有两个名为 f1 和 f2 的功能。当我正常构建我的 crate 时,我想将“dep”与 f1 功能一起使用,但在构建它进行测试时将它与 f2 一起使用。我知道开发依赖项是我们测试所需的,并且认为 Cargo.toml 的以下结构应该可以工作:
[dev-dependencies]
dep = { version = "1.0.0", features = ["f2"] }
[dependencies]
dep = { version = "1.0.0", features = ["f1"] }
但是,看起来一旦我用“f1”引入“dep”,编译器就会忽略在 dev-dependencies 部分下提到的相同依赖项。另一方面,将依赖项设置为“可选”并不能解决问题,因为“dep”根本不会被引入测试。关于如何解决这个问题或很好地规避它的任何想法?
PS:我注意到这里正在跟踪这个问题:https ://github.com/rust-lang/cargo/issues/7916 。所以目前,我只能期待受访者提供好的解决方法。