您如何 运行 在功能门控实现中进行文档测试?

How do you run doc tests in feature gated implementations?

我注意到,如果您在特征实现周围有一个像 #[feature(cfg = "nightly")] 这样的功能门,即使在夜间 rustc 调用 cargo test 也会跳过 doctest。我尝试了 cargo test --all-features,但结果是一样的。 (当然,在测试中注释掉 gate 结果是 运行。)我在 Rust 参考中也没有看到任何关于这个的内容。

您如何确保对功能门控实施进行测试运行?

作为参考,这是我的 Rust 版本。

rustc 1.17.0-nightly (c0b7112ba 2017-03-02)
binary: rustc
commit-hash: c0b7112ba246d96f253ba845d91f36c0b7398e42
commit-date: 2017-03-02

不属于 default 集的功能必须始终明确选择加入。您可以通过在命令行传递参数或在 [dependencies] 部分列出它们(如果它们是依赖项)来实现。

src/lib.rs

/// ```
/// assert!(false);
/// ```
#[cfg(feature = "nightly")]
trait Foo {}

Cargo.toml

[package]
name = "wuzzy"
version = "0.1.0"
authors = ["An Devloper <an.devloper@example.com>"]

[features]
nightly = []

运行 cargo test --features=nightly 导致断言触发,而 cargo test 忽略测试。这一切都适用于稳定的 Rust。

$ cargo test --features=nightly
   Doc-tests wuzzy

running 1 test
test src/lib.rs - Foo (line 1) ... FAILED

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured

$ cargo test
   Doc-tests wuzzy

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured