4

场景如下:我的 crate 依赖于num-bigint,并且可选依赖于rand

[dependencies]
num-bigint = { version = "0.2" }
rand = { version = "0.7", optional = true }

rand我的箱子被禁用时,一切都很好。

rand在我的箱子上启用时,我希望也启用该rand功能num-bigint。我怎样才能做到这一点?

这是我尝试过的:

[target.'cfg(feature = "rand")'.dependencies]
num-bigint = { version = "0.2", features = ["rand"] }

这有效,但我收到此警告:

warning: Found `feature = ...` in `target.'cfg(...)'.dependencies`. This key is not supported for selecting dependencies and will not work as expected. Use the [features] section instead: https://doc.rust-lang.org/cargo/reference/features.html

我应该忽略警告,还是有更好的方法?我检查了那个网页,但我找不到任何有用的东西。

4

1 回答 1

9

您可以"crate/feature"在您的功能中使用(如Cargo 文档中所述)来指定应启用的依赖项的哪些功能:

[features]
enable-rand = ["rand", "num-bigint/rand"]

请注意,该功能需要具有与依赖项名称不冲突的名称,因为可选依赖项会创建隐式功能,并且您不能设置这些以通过这种方式启用其他功能。(如果您有兴趣,我们会在 Cargo 问题#5565中跟踪此功能的实现。)

于 2020-04-07T22:32:21.327 回答