我正在编写一个 Rust 库,我想在我的文档中提供示例
cargo test
这可能吗?
我正在编写一个数据库客户端库,这些示例使用了一个假设的、不存在的数据库服务器。因此,这些示例在运行时总是会失败,但示例在语法上有效非常重要。因此我的要求如下。
如果无法做到我想要的,那么如何选择不让
cargo test
运行特定的文档测试?即,有 cargo run
编译并运行一些文档测试,但完全忽略其他一些?
这记录在 The rustdoc 书,特别是关于属性的章节。
您的起始代码块分隔符应如下所示:
/// ```no_run
摘自书中:
/// ```no_run /// loop { /// println!("Hello, world"); /// } /// ```
属性将编译您的代码,但不会运行它。这是 对于诸如“以下是如何检索网页”之类的示例很重要, 您希望确保编译,但可能会在测试中运行 没有网络访问的环境。no_run
要完全省略构建,请使用
ignore
而不是 no_run
。
将其放入 Cargo.toml 中:
[lib]
doctest = false
在这里找到它:https://doc.rust-lang.org/cargo/commands/cargo-test.html
可以使用
should_panic
来解决,与使用no_run
几乎相同。只要编译成功,无论结果如何,no_run
都会被标记为成功,并且should_panic
一定会panic。但是,两者都必须编译成功。对于提问者来说,no_run
似乎更合适,但我把这个答案留给其他读者。