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

标签 rust rust-cargo

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

还有一个通用的第三方模块,可以选择使用const-fn特征。此选项在库 crate 中公开:

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

[features]
const-fn = ["common/const-fn"]
target-a = ["board-a"]
target-b = ["board-b"]

到目前为止一切顺利,但如果 board-aboard-b crate 也有可选的const-fn功能,我想向图书馆箱子的用户公开这些选项?我可以在不创建 target-a-const-fn 的情况下执行此操作吗?和 target-b-const-fn特征?我公开的可选功能越多,或者我们支持的板越多,这显然会变得非常困惑。

我不想制作 const-fn两个 crate 中的功能拉——只应使用选定的一个,否则会不必要地增加下载和编译时间。理想情况下,我想要与以下内容等效的东西,但据我所知,没有任何东西存在:
[features]
const-fn = ["common/const-fn", "board-a/const-fn" if target-a, "board-b/const-fn" if target-b]
target-a = ...

最佳答案

不,目前 Cargo 不支持此功能,尽管有 a tracking issue对于这个功能。

关于rust - Cargo 功能是否可以启用可选依赖项中的功能而不强制激活这些 crate ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52825268/

相关文章:

rust - 我们可以在箱子安装期间下载一些东西并设置环境变量吗?

rust - 使用 Rust 创建静态库以将其链接到 arm-none-eabi C 代码固件

ssl - 构建带 cargo 的箱子时 SSL 证书无效

rust - 警告 "doc comment not used by rustdoc"是什么意思,我该如何解决?

rust - 如何在 Rust 中将字符串转换为整数?

rust - 无法在 fn 项中捕获动态环境,但代码已在 || 中{} 关闭

rust - 如何在 'Option' 中多次访问向量?

json - 如何使用 serde 在 Rust 中解析这个 JSON 文件?

windows - 将 exe 与//MT 标志链接

rust - 如何从单独的 cargo 工作区 github 存储库中导出特征