Cargo.toml:如何根据我的板条箱的功能选择依赖项的功能? [重复]

问题描述 投票:0回答:1

场景如下:我的箱子依赖于

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

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

rust dependencies rust-cargo toml
1个回答
13
投票

您可以在功能中使用

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.