Cargo 功能是否可以启用可选依赖项中的功能而不强制激活这些包?

Fus*_*uck 5 rust rust-cargo

这是库箱的 Cargo.toml。board-a它通过对板支持箱和板卡支持箱具有可选依赖性来支持两种不同的嵌入式板board-b,并且通过运行仅选择其中之一cargo build --features target-a

还有一个常见的第三方模块,可以选择使用该const-fn功能。该选项在库箱中公开:

[dependencies]
common = {...}
board-a = {optional=true, ...}
board-b = {optional=true, ...}

[features]
const-fn = ["common/const-fn"]
target-a = ["board-a"]
target-b = ["board-b"]
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,但是如果board-aboard-bcrate 也有可选const-fn功能,并且我想向库 crate 的用户公开这些选项怎么办?target-a-const-fn我可以在不创建和功能的情况下执行此操作吗target-b-const-fn?我公开的可选功能越多,或者我们支持的板越多,这显然会变得非常混乱。

我不想让该const-fn功能同时引入两个板条箱——只应使用选定的板条箱,否则会不必要地增加下载和编译时间。理想情况下,我想要类似于以下内容的东西,但据我所知,没有任何东西像它一样存在:

[features]
const-fn = ["common/const-fn", "board-a/const-fn" if target-a, "board-b/const-fn" if target-b]
target-a = ...
Run Code Online (Sandbox Code Playgroud)

小智 0

不,Cargo 目前不支持此功能,尽管此功能存在跟踪问题。