首页 > 解决方案 > 切换依赖箱功能的功能

问题描述

我对 Rust 有点陌生,遇到了一个问题,我想在我的 crate 中创建一个特性,指定应该包含依赖 crate 的哪些特性。

更具体地说,我使用的是 image-rs crate,它定义了库应该支持的图像格式的特性。

我希望我的 crate 有一个功能,它指定编译 image-rs crate 的其他图像格式功能。例如:

# Cargo.toml
[dependencies]
image = { version = "^0.23.6", features = ["png", "jpeg"] }

[features]
# I dont know the syntax to include image in my feature with specific image crate featres.
extra-image-formats = [ "image {features = [jpeg, png, gif, webp]}" ]

这支持吗?会很好;我希望默认包含来自 image-rs crate 的常用图像格式,但选择加入更多图像格式(代价是更大的二进制文件和更长的编译时间,因为所有额外的解码器和编码器)。

提前致谢!

标签: rustrust-cargoconditional-compilationrust-crates

解决方案


货物手册中所述,您可以使用crate/feature来引用依赖项的功能。因此,您的示例将如下所示:

# Cargo.toml
[dependencies]
image = { version = "^0.23.6", features = ["png", "jpeg"] }

[features]
extra-image-formats = [ "image/jpeg", "image/png", "image/gif", "image/webp" ]

推荐阅读