2

我有一个模块,我想在我的文档中的代码块中使用它。

该模块仅用于测试,因此它具有#![cfg(test)]应保留的属性。

但是,因此,在对文档运行测试时,似乎没有包含此文件。

看看 MVCE:

库文件

//! ```
//! use example::mock::Number;
//! ```
pub mod mock;

pub fn main() {}

模拟.rs

#![cfg(test)]

pub type Number = i32;

这失败了:

---- src/lib.rs -  (line 1) stdout ----
error[E0432]: unresolved import `example::mock`
 --> src/lib.rs:2:14
  |
4 | use example::mock::Number;
  |              ^^^^ could not find `mock` in `example`

有没有办法让我的文档测试代码使用这些为测试配置的文件?

4

1 回答 1

3

这是 doctest 的一个已知限制(问题 #45599)。可悲的是,自问题开始(2017 年末)以来没有真正的进展。

作为一种解决方法,建议您向您的Cargo.toml

[features]
test = []

而不是检查#[cfg(test)]你可以这样做#[cfg(feature = "test")]

于 2019-04-17T12:23:18.550 回答