如何在Cargo中向子依赖项“传递”功能标志?

25

我正在使用Cargo编写一个库。如果这个库依赖于另一个库,比如libc,而这个库暴露出一个特性(在这种情况下是use_std),我该如何使我所暴露的特性能够启用或禁用依赖库中的这个特性?

查看Cargo文档,似乎没有官方指定的方法来实现这一点。


2
这个问题有一个更好的答案:如何在Rust中将编译器标志传递给子板条箱? - user
1个回答

26
从您提供的文档中,功能部分,摘录如下:
# Features can be used to reexport features of other packages. The `session`
# feature of package `awesome` will ensure that the `session` feature of the
# package `cookie` is also enabled.
session = ["cookie/session"]
这个问题的答案是:

是否足够了?


2
嗯,如果我有一个依赖项,比如ascii,它暴露了一个no_std标志 - 如果我的use_std标志已启用,我想要禁用它,该怎么办? - burtonageo
1
@burtonageo,这是个有趣的问题,你可能需要为此提出一个单独的顶层问题!这甚至可以作为一个功能请求。特别是对于no_std,我认为正确的做法是有一个默认功能,使得可以使用来自std的东西,所以也许ascii crate只是相反的... - Shepmaster
1
是的,我听说过功能应该是可添加的,而不是可减少的,所以我认为最好的办法是向他们发起拉取请求。 - burtonageo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接