rust - 如何在文档测试中使用具有 `test` 属性的模块?

标签 rust rustdoc

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

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

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

看一下 MVCE:

lib.rs

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

pub fn main() {}

mock.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`

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

最佳答案

这是 doctest ( Issue #45599 ) 的已知限制。遗憾的是,自该问题开始(2017 年底)以来没有取得任何实际进展。

作为解决方法,it is suggested您向 Cargo.toml

添加功能
[features]
test = []

您可以执行#[cfg(feature = "test")],而不是检查#[cfg(test)]

关于rust - 如何在文档测试中使用具有 `test` 属性的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725551/

相关文章:

compiler-errors - 如果没有错误,我如何才能只显示警告?

rust - 为什么Rust允许升级/降级可变性?

rust - 文档示例中 Unresolved 导入

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

rust - 如何记录来自 Rust 编译器插件的宏?

rust - 在文档中将长表行分成多行

debugging - 每次调用函数时如何访问函数的调用位置?

performance - 为什么我的 Rust 程序比等效的 Java 程序慢?

rust - Piston 应用程序在几分钟后因内存分配错误而崩溃

macros - 有没有办法从文档中隐藏宏模式?