有没有办法在rustdoc验证示例时启用Cargo功能?

时间:2017-09-20 20:31:24

标签: rust rustdoc

我在箱子文件中有以下部分:

//! # Examples
//! ```rust,no_run
//! extern crate stm32f103xx;
//! // ...
//! ```

问题是对stm32f103xx包的依赖是可选的。如果我默认启用功能stm32f103xx,一切正常,但我不想让它默认。有没有办法在rustdoc验证示例时启用该功能?

2 个答案:

答案 0 :(得分:3)

即可。功能由箱子的最终用户选择,并且您不是唯一选择运行测试的人。如果你可以按照自己的要求行事,那么你实际上强迫任何想要运行测试的人下载并编译"可选"依赖性,使其不是非常可选的。

您可以做的只是在启用该功能时才包含该文档。这并不明显,但文档注释会转换为属性语法(#[doc = "..."])。结合cfg_attr,您可以有条件地包含文档,从而有条件地编译并运行一个示例:

#![cfg_attr(feature = "alpha", doc = "
# Examples
```rust
fn alpha() {}
```
")]

同样地,您可以使用相反的案例来说明"查看这个非常棒的功能!"。

另见:

答案 1 :(得分:1)

为了在编译项目的任何部分时总是有依赖关系(包括那个部分的测试),Development Dependencies是合适的。

[dev-dependencies]
stm32f103xx = "0.7.5"

正如您所提到的那样,crate也是可选的主要依赖项,您可以在清单中保留它。

[dependencies]
stm32f103xx = { version = "0.7.5", optional = true }