我有一个非常简单的结构和new()
该结构的实现。
pub struct Square {
rank: usize,
file: usize,
}
impl Square {
/// # Examples
/// ```
/// Square::new(0,0); //The square A1.
/// ```
}
此外,我还有一些测试(这些测试确实调用了Square::new()
,尽管它们不是该函数的测试)。当我运行时cargo test
,我的文档示例中的代码出现以下错误:
使用未声明的类型
Square
。考虑导入这个结构。
cargo build
奇怪的是,当我运行或 时,这个问题不会发生cargo doc
。
当我按照编译器的建议导入结构时,问题就消失了。然而,这似乎不是我应该做的事情,因为(我认为)示例应该尽可能简洁。查看 的源代码String::new()
,示例文档由一行代码组成,不需要导入。不过,源代码确实env::args
包含了 的导入std::env
。
这是有意的行为吗?这是一个错误吗?
这是预期的行为。Doctests是一个强大的工具,可以同时记录您的 API 并测试您的实现。为此,他们必须成功编译。
然而,作为文档,文档测试也需要简短明了。因此,如果您认为不需要某些代码来理解示例(但仍然需要存在以便 doctest 编译),您可以通过在
#
其前面添加 a 来隐藏此行: