【发布时间】:2021-08-28 22:34:12
【问题描述】:
在 Rust Cargo 中,如何根据包含另一个依赖项来包含依赖项的可选功能?
具体来说,我想提供一个“serde”功能,它可以支持 serde。我能做的是[1]
[dependencies]
serde = { version = "1.0", optional = true }
Rust 会自动将此依赖项导出为功能(据我了解)。 但是,我使用其他依赖项,它们也提供“serde”功能:
[dependencies]
otherpackage = { version = "1.0", features = ["serde"] }
serde = { version = "1.0", optional = true }
现在,只有在为此包激活了“serde”功能时,才应包含“otherpackage”的 serde 功能。但是货物不让我做
[features]
serde = [ "serde", "otherpackage/serde" ]
[dependencies]
otherpackage = { version = "1.0" }
serde = { version = "1.0", optional = true }
我知道这是由于“serde”功能和“serde”依赖项之间的名称冲突,我认为它也作为功能导出。所以,本质上现在有两个“serde”功能,这显然是行不通的。
如何在仍然提供“serde”功能且不重命名“serde”包的情况下解决此问题?理想情况下,我只想禁用 serde 依赖项作为功能的自动导出,或者能够指定“serde”包的功能依赖项。
【问题讨论】:
标签: rust-cargo